我使用ajax .POST运行php脚本,假设返回true / false。我在脚本中使用“echo”返回true / false。但是在我将结果返回给JS后,我会在IF语句中比较收到的文本,这些文本永远不会有效!这是我的代码
$.ajax({ url: 'admin_checkuser.php',
data: {action: window.myId},
type: 'post',
success: function(output) {
if (output == "true"){
这里是被称为
的php脚本include_once('class.MySQL.php');
$userid = $_POST['action'];
$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;
if ($bb == 0){
$query = "INSERT INTO videotable VALUES ('','$userid','true')";
$oMySQL->ExecuteSQL($query);
echo 'true';
exit();
}else{
$sharing = mysql_result($aa,0,"share");
echo $sharing;
exit();
}
我通过执行“alert(output)”确保我收到true \ false,并且它始终显示true \ false所以我真的不明白为什么即使警报(输出)显示为真,我的IF语句也会失败
提前致谢!
答案 0 :(得分:2)
根据我的经验,尝试解析ajax响应的类型往往是超级不可靠的。
出于这个原因,我(现在)确保每当我编写一个用于返回ajax数据的服务器端函数时,我保持它完全符合我自己的set response“standard”,然后设置我的响应输入JSON的ajax方法。
这样做可以使处理错误更具可预测性。
标准化响应的一个示例是:
$ajaxResponse = array(
'data' => $someData,
'result' => true,
'message' => 'your yadayada was succesful',
'timestamp' => time()
);
print json_encode($ajaxResponse);
在ajax中,您的回答如下:
success: function( response ) {
if(response.result) {
alert(response.message);
}
}
答案 1 :(得分:1)
很抱歉,如果这没什么帮助,你可以试试:
$.ajax({ url: 'admin_checkuser.php',
data: {action: window.myId},
type: 'post',
dataType: 'json',
success: function(output) {
if (output) { ... }
和
echo json_encode(true);
// echo json_encode($sharing);
答案 2 :(得分:1)
jQuery文档提供了有关此调用返回的更多详细信息:http://api.jquery.com/jQuery.ajax/。
成功(data,textStatus,jqXHR)函数,数组
请求成功时要调用的函数。功能得到 传递了三个参数:从服务器返回的数据,格式化 根据dataType参数;描述状态的字符串; 和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。截至jQuery 1.5,成功设置可以接受一系列功能。每个函数将依次调用。这是一个Ajax事件。
看起来你期望从AJAX调用返回的数据是你的测试中的字符串"true"
,所以如果没有通过,那么你必须得到的不仅仅是这个字符串。
我建议在Firefox中使用Firebug的网络标签查看XHR请求,并检查您回复的内容的响应,看看它是否与您期望的不同。