2013-10-23 2 views
1

나는 PHP 파일을 통해 mysql 데이터베이스의 일부 데이터를 수정하기 위해 Ajax를 사용하고있다. php 파일이 "OK"또는 "ERROR"를 울릴 수 있도록 코드를 작성했습니다. 나는 경고 (ret)로 체크하고 잘 작동하고있다. 하지만 문제는 if (ret == "OK")입니다. 이 성명서 안에 들어 가지 않습니다. 아무도 나를 도울 수 있습니까?If 문을 사용하는 Ajax ResponseText

xmlhttp=new XMLHttpRequest(); 
xmlhttp.onreadystatechange=function(){ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
     document.getElementById('Store_cards_action_form_close').click(); 
     ret = xmlhttp.responseText; 
     if (ret=="OK"){ 
      alert("Congratulations. Transaction Successful."); 
      document.location.reload();  
     } 
     else{ 
      alert("You have Insufficient Coins to buy this Card!"); 
     } 
    } 
} 
xmlhttp.open("GET","script_card_transaction.php?" + para,true); 
xmlhttp.send(); 
+0

를 들어 당신은 아마 당신의 응답 텍스트 주위에 약간의 공백이있다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim – Phil

답변

0

내 의견에서 언급했듯이 응답 텍스트에는 공백 문자가있을 수 있습니다. trim 응답 텍스트를 사용하거나 대신 JSON 형식의 문자열로 작업 할 수 있습니다. 예를 들어,

header('Content-type: application/json'); 
echo json_encode(array('status' => $status)); // where $status is 'OK' or 'ERROR' 
exit; 

그런 다음 PHP 파일에서

var ret = JSON.parse(xmlhttp.responseText); 
if (ret.status == 'OK') { 
    // etc 

아마 "조금 더 가서 문자열"OK "보다 모호한 것을 사용하고 것입니다 귀하의 JS에서 JSON으로이 구문 분석 오류". 예를

echo json_encode(array('success' => $isSuccess)); // where $isSuccess is a boolean (true or false) 

과 JS

...

if (ret.success) { 
    // etc 
+0

json 조언을 주셔서 감사합니다. 내가 확인한 공백이 없었습니다. 하지만 어쨌든 문제는 jsonencode로 해결되었습니다. 아직도 json 대신에 간단한 문자열로 작동하지 않는 이유가 나를 귀찮게합니다. 많은 친구에게 감사드립니다. – Draven

+0

@Draven 응답 텍스트에 캐리지 리턴이나 다른 보이지 않는 문자가있을 수 있습니다. 그것이 무엇이든, 그것은 "OK"와 같지 않았습니다. – Phil