2012-04-04 74 views
1

我的jQuery.ajax()函数不工作.. 我想显示来自服务器的JSON数据。请求成功后,我通过Firebug找到了。当我删除功能(数据){在“成功” - 标记警报触发,功能停留时,它不.. 顺便说一句:请求总是成功,当用户名和密码错误,如何那可以吗?但是,当我删除xhr.setRequestHeader()方法萤火虫显示呼叫用,因为基本身份验证服务器需要的“山寨版”结束了..这个jQuery AJAX请求有什么问题?

任何建议,以解决这个问题?提前致谢!

我的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> 

为什么我的身份证不是显示?

顺便说一句:什么.done(函数(){})“成功之间的区别:(函数(){})

+0

是同一个域上的JSON文件吗?如果不是,查找跨域Ajax。 (JSONP) – RvdK 2012-04-04 08:47:54

+0

你碰巧知道'success'和'done'做同样的事情吗?在代码中是多余的? – Joseph 2012-04-04 08:50:07

+1

因为你的脚本工作正常(请参阅:http://jsfiddle.net/vbeSm/),因为我认为它是你的JSON调用 - 它是作为@PoweRoy问的跨域吗? – 2012-04-04 08:50:18

回答

1

我就回答什么,我知道:有在差不多做完之间的差异DOC))的说明(和成功(:

取消通知:)的jqXHR.success(),jqXHR.error(),和jqXHR.complete(回调将是在jQuery 1.8中不赞成使用jqXHR.done(),jqXHR.fail(),a nd jqXHR.always()代替。

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

+0

我以前试过,但getJSON()不支持我需要这个请求的基本认证 – P4tR 2012-04-04 08:49:13