0

我使用 ajax .POST 来运行假设返回 true/false 的 php 脚本。我在脚本中使用“echo”返回真/假。但是在我将结果返回给 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,所以我真的不明白为什么即使 alert(output) 显示为 true,我的 IF 语句也会失败

提前致谢!

4

3 回答 3

2

根据我的经验,尝试解析 ajax 响应的类型往往是非常不可靠的。

出于这个原因,我(现在)确保每当我编写一个用于返回 ajax 数据的服务器端函数时,我都会让它完全符合我自己设置的响应“标准”,然后在ajax 方法到 JSON。

这样做可以使处理错误更加可预测。

标准化响应的一个示例是:

$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);
   }
}
于 2012-05-14T23:20:08.783 回答
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);
于 2012-05-14T23:17:32.760 回答
1

jQuery 文档提供了有关此调用返回内容的更多详细信息:http: //api.jquery.com/jQuery.ajax/

成功(数据,文本状态,jqXHR)函数,数组

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

看起来您期望从 AJAX 调用返回的数据是"true"您的测试中的字符串,所以如果这没有通过,那么您一定是返回的不是这个确切的字符串。

我建议在 Firefox 中使用 Firebug 的 net 选项卡来查看 XHR 请求并检查您返回的响应,看看它是否与您期望的不同。

于 2012-05-14T23:20:39.077 回答