0

jqueryにはCORSの解決策があることがわかりました

js ファイル内のコードは次のとおりです。

   $.getJSON('http://localhost:8001/location?callback=?', function(data){
        console.log(data[]);
        console.log("anything");

    });

サーバー json API:http://localhost:8001/location?callback=?リクエストに対して、戻ります

({url:'バー'})

問題はconsole.log()実行されないことです。そこにブレークポイントを配置しましたが、ブラウザはそこで止まりません。

PSクロスドメインリクエストは成功しました。応答するjsonファイルがWebインスペクターのリソースリストにあることがわかります

何か案が?

4

1 に答える 1

3

さて、質問に示されているコードは、構文エラーがあるため、まったく実行されません (リクエストも行われません)。

console.log(data[]);
// Here --------^^

しかし、あなたの発言から、ある時点でそのエラーなしでテストしたはずの応答を見たことがあると思います。

サーバーの応答が正しくありません。あなたは言った

サーバー json API:http://localhost:8001/location?callback=?リクエストに対して、戻ります

({url:'bar'})

...しかし、これは有効な JSONP 応答ではありません (3 つの異なる点で、有効な JSONP 応答でもありません)。正しい JSONP 応答を形成するには、callbackクエリ文字列パラメーターで受け取った関数名を使用して、JavaScript 関数呼び出しで応答する必要があります。たとえば、callbackis__jquery456481345の場合、応答は次のようになります。

__jquery456481345({"url":"bar"})

JSON について: 上記で、({url:'bar'})これは 3 つの異なる点で有効な JSON 応答ではないことを述べました。繰り返しますが、あなたの例では JSONP (これは異なります) を使用していますが、完全を期すために、JSON としての問題を次に示します。

  1. JSON ドキュメントは で始めることはできません。または(で始める必要があります。{[

  2. JSON では、プロパティ名 (キー)は二重引用符で囲む必要"url": ...があります (例:ではなく) url: ...

  3. JSON では、文字列は二重引用符で囲む必要があります。JavaScript のように単一引用符は無効です。そう"bar"ではありません'bar'

于 2013-06-22T09:11:21.753 に答える