0

我正在使用 Jquery 进行 POST 以验证我的页面。

$.post("api/authenticate", {"authkey": authkey}, function(data){
    console.log(data);
    if (data.success === "false") {
    window.location="/Login.html";
    } 
});

编辑!!

如果身份验证不成功,我的 php 函数将返回一个 json 对象

{"success":"false"}

但是,console.log(data) 没有返回任何东西。即使我可以在资源中看到响应。

任何人都知道我该如何解决这个问题?

任何帮助是极大的赞赏。

4

3 回答 3

1

如果您期待 JSON,请使用 $.getJSON。它会将您的响应解析为 JSON 对象。

$.getJSON("api/authenticate", {"authkey": authkey}, function(jsonObj){
    console.log(jsonObj);
    if (jsonObj.success === "false") {
       window.location="/Login.html";
    } 
});

http://api.jquery.com/jQuery.getJSON/

于 2012-10-25T16:39:38.870 回答
1

氟利昂的答案可能有效,这是另一种选择,尝试强制dataType转换为 JSON。

// This is the signature for $.post
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

$.post("api/authenticate", {"authkey": authkey}, function(data){
    console.log(data);
    if (data.success === "false") {
        window.location="/Login.html";
    } 
}, "json");

另一个要寻找的想法是确保您的服务器以 2xx 状态响应。如果返回不同的状态,jQuery将不会尝试读取响应。相反,它将查找在statusCode传递给http://api.jquery.com/jQuery.ajax/的选项中设置的状态代码处理程序

例子

jQuery.ajax( "api/authenticate", {
    data: {"authkey": authkey},
    dataType: 'json',
    statusCode: {
       306: function(jqXhr, errorType) {
            alert('Could not login')
            // If you still want to access the response, it's accessible as raw text
            // If it's JSON, you have to parse it.
            alert (jqXhr.responseText);
       }
    }
});
于 2012-10-25T16:43:43.283 回答
-2

您需要将数据作为数组进行迭代,例如data[0]通过 for 循环或 while 循环

于 2012-10-25T16:31:31.713 回答