1

我有这个 jQuery 脚本

var dataString = "class_id="+class_id;

$.ajax({
    type: "POST",
    url: "page.php",
    data: dataString,
    success: function (msg) {
        //stuck here
    },
    error: function () {
        showNotification("error", "Could not process at this time, try again later."); //this is a function created by me (which works fine so I just left the code in here)
    }
});

我的 PHP 输出是这样的

echo '{status:1,message:"Success"}';

或者

echo '{status:0,message:"Failure"}';

我在 jQuerysuccess: function(...)部分尝试做的是检查状态是 0 还是 1,然后显示消息。

我试图做的是

success: function(text) {
   if(parseInt(text.status) == 1) {
      alert(text.message); // this is the success, the status is 1
   } else {
      alert(text.message); // this is the failure since the status is not 1
   }
}

这不起作用,它只输出 else 语句,即使状态为 1

4

4 回答 4

3

您的 PHP 正在生成无效的 JSON,并且没有显示设置适当的内容类型标头来告诉浏览器首先将其视为 JSON 的迹象。所以首先,修复PHP:

header('application/json');
echo json_encode(Array("status" => 1, "message" => "Success"));

然后:

success: function (msg) {
    alert(msg.message)
},
于 2012-04-06T17:56:13.483 回答
2

你也可以使用

PHP

echo json_encode(Array("status" => 1, "message" => "Success"));

JS

在您的回调函数中使用

success: function (msg) {
    $.parseJSON(msg);
    alert(msg.message);
}

parseJSONPHP 返回/回显的 json 字符串转换为 json 对象。

于 2012-04-06T18:00:35.707 回答
1

试试下面的东西,

$.ajax({
    type: "POST",
    url: "page.php",
    data: dataString,
    dataType: 'json',
    success: function (msg) {
        if (msg.status == 0) {
          alert("Success " + msg.message);
        } else if (msg.status == 1) {
          alert("Error " + msg.message);
        }
    },
    error: function () {
        showNotification("error", "Could not process at this time, try again later."); //this is a function created by me (which works fine so I just left the code in here)
    }
});
于 2012-04-06T17:55:19.737 回答
1

如果您未在 $.ajax 中指定,则传递给响应处理程序的类型“json”数据将被视为字符串。如果您指定 'json' dataType 参数,您可以使用:

msg.status 

msg.message

作为提示,我建议在 php 中使用 json_encode 函数来生成 json 输出。

于 2012-04-06T18:01:40.150 回答