这个jQuery AJAX请求有什么问题?

时间:2012-04-04 08:43:42

标签: javascript jquery ajax json

我的jQuery.ajax()函数不起作用.. 我想从服务器显示JSON数据..请求成功,我通过Firebug发现。当我在“成功”标签中删除功能(数据){时,警报会触发,当该功能停留时,它不会... 顺便说一句:请求总是成功,当用户名和密码错误时,怎么会这样?但是,当我删除 xhr.setRequestHeader()方法时,Firebug显示由于服务器需要的基本身份验证,调用最终会被“未授权”。

有什么建议可以解决这个问题吗?提前谢谢!

我的javascript“gadget.js”

$.ajax({
    url: "http://localhost:8387/nscalemc/rest/mon/resourcestatus.json",
    type: "GET",
    dataType: "json",
    contentType: "application/json",
    beforeSend: function(xhr) {
        var base64 = btoa('admin' + ":" + 'admin');
        xhr.setRequestHeader("Authorization", "Basic" + base64);
    },
    success: function(data) {
        $(data.groupStatus).each(function() {
            $("body").append("<p>ID: " + this.id + "</p>");
        });
        alert("success!");
    }
}).done(function(data) {
    alert("done!");
    $(data.groupStatus).each(function() {
        $("body").append("<p>ID: " + this.id + "</p>");
    });
}).fail(function(jqXHR, textStatus) {
    alert("fail - " + textStatus);
});​

这是我的JSON

{
    "groupStatus": [
        {
            "id": "Application Layer Configuration-ApplicationLayer",
            "time": 1332755316976,
            "level": 0,
            "warningIds": [],
            "errorIds": []
        },
        {
            "id": "Application Layer-ApplicationLayer:nscalealinst2",
            "time": 1333431531046,
            "level": 0,
            "warningIds": [],
            "errorIds": []
        }
    ]
}

最后我的HTML类“gadget.html”:

<html>
<head>
    <title>My Gadget</title>
    <link href="css/gadget.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
</head>
<body>
    <div id="content"></div>
    <script type="text/javascript" src="js/gadget.js"></script>
</body>

为什么我的ID没有显示?

顺便说一下: .done(function(){})“success:(function(){})之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

我会回答我所知道的:文档中有一条关于done()和success()之间区别的说明:

  

弃用通知:jQuery 1.8中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

如果您正在使用JSON,则可以使用getJSON()而不是ajax()。 希望它有所帮助!