2013-10-23 54 views
1

我正在使用Ajax通過php文件修改mysql數據庫中的某些數據。我寫了代碼,以便php文件回顯「OK」或「ERROR」。我檢查了alert(ret),它工作正常。但問題出在if(ret ==「OK」)。它沒有納入這個聲明。有人可以幫我嗎?Ajax ResponseText與If語句

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格式的字符串。例如,在你的PHP文件

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

然後,在你的JS解析此作爲JSON

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

我可能會去遠一點,而且使用的字符串「OK」更加明確的東西,「錯誤」。例如

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