2013-06-05 2 views
2

jQuery.ajax()를 사용하여 보낸 양식의 PHP 파일이 있습니다. 전자 메일이 전송되지 않고 오류 메시지가 표시되지 않는 경우 문제가 발생합니다. 이메일 오류를 전송되지 않기 때문에 뭔가 작동하지 않을 때 jQuery.ajax() 핸들 오류

$(document).ready(function() { 
    $('input[type="submit"]').click(function() { 
     $.ajax({ 
      url: "mail.php", 
      type: "POST", 
      data: { 
       name: $('input[name="name"]').val(), 
       email: $('input[name="email"]').val(), 
       msg: $('input[name="msg"]').val() 
      }, 
      cache: false, 
      success: function(responseText) { 
       $('#result').css('background', 'green'); 
      }, 
      error: function(responseText) { 
       $('#result').css('background', 'red'); 
      } 
     }); 
     return false; 
    }); 
}); 

하지 성공하지만 아무것도 보여줍니다 예. 그래서, 나는 다른 코드에 대한 내 mail.php 코드를 변경합니다. 내가 버튼을 누르면

<?php 
    if(2 > 4) { 
     true; 
    } else { 
     false; 
    } 
?> 

, 성공 액션 스틸이 작동하고 그 이유를 모른다.

+1

당신이'2> 4'로 할 수있는? –

+2

@GauravVashishtha는 mail.php하는 아약스 호출하기 전에, 당신은 JS 자체에서 이메일을 확인 해달라고 왜 –

+0

false를 반환합니다. 나는 심각하게 당신이 php에서 한 것을 얻지 못했고, 여기에 게시 한 것을 얻지 못했습니다. 당신은 당신이 진실과 거짓 에코 필요 mail.php – dreamweiver

답변

0

오류 작동합니다 jQuery가 PHP 파일에 연결하지 못하면 트리거하지 않습니다.이 경우 사용자가 직접 오류를 처리하지 않아도됩니다. 먼저이 오류가 무엇입니까?

if(2 > 4) { 
    true; 
} else { 
    false; 
} 

이 아무것도 보내지 않을 것 다시 jQuery를에 난 당신 jQuery를

그것은 또한 당신이 사용하고있는 JQuery와 버전에 따라 다릅니다
$(document).ready(function() { 
    $('input[type="submit"]').click(function() { 
     $.ajax({ 
      url: "mail.php", 
      type: "POST", 
      data: { 
       name: $('input[name="name"]').val(), 
       email: $('input[name="email"]').val(), 
       msg: $('input[name="msg"]').val() 
      }, 
      cache: false, 
      success: function(result) { 
       if(result === 'true') { 
        $('#result').css('background', 'green'); 
       } else { 
        $('#result').css('background', 'red'); 
       } 
      }, 
      error: function(error) { 
       alert(error) 
      } 
     }); 
     return false; 
    }); 
}); 
+0

, 감사합니다! –

2

오류 콜백은 ajax 호출이 실패하거나 PHP 메일 함수가 실패 할 경우에만 트리거되며 false를 반환하지 않으면 서버에서 무언가를 받으면 성공합니다 (문자열 "false"). 당신은 PHP에서 오류를 트리거하거나 성공 처리기에서 그것을 잡을 수 있습니다처럼

오류를 잡을 :

success: function(data) { 
    if (!data || $.trim(data) == 'false') { 
     $('#result').css('background', 'red'); 
    }else{ 
     $('#result').css('background', 'green'); 
    } 
}, 

및 PHP 당신의 두 경우 모두

<?php 
    echo 2>4 ? 'true' : 'false'; 
?> 
0

을 성공 콜백 해고 :

success: function(responseText) { 
       if(!!responseText) //!! convert string to boolean 
        $('#result').css('background', 'green'); 
       else 
        $('#result').css('background', 'red'); 
      }, 
1

이 &이 변경 오류 제거 기능을 당신의 성공 함수에

반환 할 것을 mail.php 파일 에코 최초
$.ajax({ 
      url: "mail.php", 
      type: "POST", 
      data: { 
       name: $('input[name="name"]').val(), 
       email: $('input[name="email"]').val(), 
       msg: $('input[name="msg"]').val() 
      }, 
      cache: false, 
success: function(responseText) { 
       if(responseText)$('#result').css('background', 'green'); 
       else $('#result').css('background', 'red'); 
      } 

     }); 
0

:

<?php 
    if(2 > 4) { 
     echo "true"; 
    } else { 
     echo "false"; 
    } 
?> 

을 그리고 성공 기능에 그렇게 :

 success: function(responseText) { 
      if(responseText) { 
      $('#result').css('background', 'green'); 
      } else { 
      $('#result').css('background', 'red'); 
      } 
     } 
0

에 다음

if(2 > 4) { 
    echo 'true'; 
} else { 
    echo 'false'; 
} 

을 추천합니다. 그 1.9 당신이 할 사용하여 처리 할 수 ​​있다면, 실패하고 항상 당신의 PHP 스크립트는 아무 것도 반환하지 않습니다) 1.9

var request = $.ajax({ 
url: "mail.php", 
      type: "POST", 
      data: { 
       name: $('input[name="name"]').val(), 
       email: $('input[name="email"]').val(), 
       msg: $('input[name="msg"]').val() 
    } 

}); 

request.done(function(e){ 
//GET THE STATUS FOR THE EMAIL FROM THE PHP SCRIPT 
//ASSUMPTION THAT FETCHING e=1/0 - 1 - Success, 0 - Failure 
if(parseInt(e)) 
{ 
$("#result").css("background","green"); 
} 
else 
{ 
$("#result").css("background","red"); 
} 

}); 
0

1의

을 작동합니다. 예를 들어, 당신은 당신의 HTML 페이지에서 모든 자바 스크립트를 제거하는 경우, 그리고 양식의 작업 속성은 myphp.php를 지정하고 myphp.php는 다음과 같습니다 후 표시됩니다 무엇

<?php 

$html = "<html><head></head><body><div>Hello world.</div></body></html>"; 

?> 

폼의 제출 버튼을 클릭합니다 ?요청 가 실패하면

2) 오차 함수가 호출된다. PHP 스크립트에서 아무것도 응답을 얻지 못하면 요청이 실패하지 않습니다. 요청이 성공하면 브라우저가 요청을 보내고 서버가 요청을 받고 서버가 PHP 스크립트를 실행하게하고 서버가 PHP 스크립트의 결과를 응답으로 보냈다는 것을 의미합니다. 요청은 서버가 요청을 처리하는 동안, 서버가 충돌, 당신은 존재하지 않는 파일을 요청하는 요청에 응답 너무 바빠서 경우 실패 등

관련 문제