0

jQuery (v1.9.1) ajax の使用に問題があります。

これは本当に単純な js ( common.js) です。

var BASE_URL = window.location.protocol + '//' + window.location.host + '/';

$(document).ready(function(){
    //load menu
    $.ajax({
        type : 'GET',
        url : BASE_URL + 'menu.json',
        dataType: 'json'
    })
    .done(function(){alert('D');})
    .fail(function(){alert('F');})
    .always(function(){alert('A');});
});

Firebug によると、ファイル ( menu.json) は正しくロードされています。しかし問題は、私が常に警告メッセージFA.

では、なぜこの本当に単純なコードが機能しないのでしょうか? 私はそれを理解することはできません。

必要に応じて、対応する html 部分を以下に示します。

<!DOCTYPE html>
<html>
    <head>
        ...
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript" src="js/common.js"></script>
    </head>
....

両方の JavaScript ファイルが正しく読み込まれます。

アップデート

ここにコンテンツがありますmenu.json(はい、静的です)

[
    {
        "name": "Home",
        "url": "#main"
},
{
        "name": "WTF",
        "url": "#wtf"
    }
]
4

1 に答える 1

3

転送が成功したからといって、AJAX 呼び出しが成功したとは限りません。ほとんどの場合、応答は有効な JSON ではありません。Content-typeまた、Web サーバーがJSON に対して正しいものを返すことを確認する必要がある場合もありますapplication/json

確認済みの編集- JSON では、キー (および文字列値) を二重引用符で囲む必要があります

もう 1 つの一般的な理由は、クロス オリジン リソース共有のセキュリティ問題ですが、現在のページと同じサイトからダウンロードしているため、ここでは問題にはなりません。

また、実際に指定する必要はありませんBASE_URL- パスを使用するだけです/menu.json

于 2013-06-04T15:25:15.170 に答える