2012-04-04 71 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