【发布时间】:2011-02-17 10:34:41
【问题描述】:
我一直在我的网站中使用 AJAX。 AJAX 显然是一种双向通信。
这是与 ID 或单词 ERROR 相呼应的 PHP 代码:
$quickCheckQuery = mysql_query("SELECT * FROM pos WHERE type='$type' AND design='$design' AND medium_id='$medium'")or die("ERROR: ".mysql_error());
if(mysql_num_rows($quickCheckQuery)==0){
mysql_query("INSERT pos VALUES(NULL, '$title', '$type', '$design', NULL, NULL, NULL, NULL, NULL, NULL, '$medium')")or die("ERROR: ".mysql_error());
echo mysql_insert_id();
}else{
echo "ERROR";
}
这确实会按预期将单词 ERROR 或插入的 ID 发送回客户端。
这是我在 javascript 中的“接收响应”:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var newId;
newId = xmlhttp.responseText;
if(newId=="ERROR"){
alert(newId);
alert("There is an ERROR");
}else{
alert(newId);
alert("Processing Files");
}
}
现在,我会在每种情况下收到 2 个警报 - 一方面可能是:
Alert 1: ERROR
Alert 2: There is an ERROR
OR
Alert 1: 5
Alert 2: Processing Files
但是,我实际上得到的是:
Alert 1: ERROR
Alert 2: Processing Files
我的 if 语句逻辑看起来很简单。我就是解决不了这个问题..
【问题讨论】:
-
尝试将 die("ERROR: ") 更改为 (die("DB_ERROR") 之类的其他内容,看看您是否仍然收到相同的警报?
-
逻辑似乎是正确的,可能
newId不是完全"ERROR"。也许不知何故有一个白人空间。试试newdId.replace(/\s+/g, '') === "ERROR"。 -
您也可以安装 firebug 并在控制台中准确检查 ajax 调用返回的内容,以确保安全。
-
我会尝试在警报中添加一些额外的部分,例如
alert('If clause'+newId)... 这肯定会有所帮助 -
好的,我想我已将问题缩小到我的 quickCheckQuery 语句。 - 我会更新!
标签: php javascript mysql ajax if-statement