1

jQuery.ajax()関数が機能しません。サーバーからのJSONデータを表示したいのですが。リクエストは成功しました。Firebugでわかりました。「success」タグでfunction(data){を削除すると、アラートが発生しますが、関数が残っている場合は発生しません。ちなみに、ユーザー名とパスワードが間違っている場合でも、リクエストは常に成功します。 ?しかし、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(){})の違いは何ですか?

4

1 に答える 1

1

私が知っていることに答えます。ドキュメントには、done() と success() の違いに関するメモがあります。

非推奨通知: jqXHR.success()、jqXHR.error()、および jqXHR.complete() コールバックは、jQuery 1.8 で非推奨になります。最終的な削除に備えてコードを準備するには、代わりに jqXHR.done()、jqXHR.fail()、および jqXHR.always() を使用してください。

JSON を使用している場合は、ajax() の代わりに getJSON() を使用できます。それが役に立てば幸い!。

于 2012-04-04T08:47:47.103 に答える