1

我正在使用 Ajax 通过 php 文件修改 mysql 数据库中的一些数据。我已经编写了代码,以便 php 文件回显“OK”或“ERROR”。我已经检查了 alert(ret) 并且工作正常。但问题在于 if (ret=="OK")。它没有进入这个声明。有人可以帮帮我吗?

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();   
4

1 回答 1

1

正如我在评论中提到的,您的响应文本周围可能有一些空白字符。您可以修剪响应文本,或者改为使用 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”和“ERROR”更明确的东西。例如

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

和JS...

if (ret.success) {
    // etc
于 2013-10-23T23:52:13.000 回答