-1

静的 jsonp ファイル (jsonp-test.php) をサーバーに配置しようとしていますが、読み取ることができません。これは私が持っているものです:

mycallback[
  {"key":"1","val":"test1"},
  {"key":"2","val":"test2"}
]

そして、これは私がそれを読もうとしている方法です:

var url = "http://www.remote-server/jsonp-test.php?callback=mycallback";
$.getJSON(url, function(data) {
  alert(data.toSource());
});

私は何を間違っていますか?

4

2 に答える 2

0

それで、いくつかのこと...「私はそれを読むことができません」と言うとき、実際に正しいアドレスから JSONP を要求していることを確認できますか? たとえば、URLを開くことができますか

http://www.remote-server/jsonp-test.php?callback=mycallback

ブラウザーのタブで、JSONP を確認します。もしそうなら、あなたのJSONPのフォーマットが間違っていると私が思う二次的な問題です。mycallback は、実際には呼び出される関数の名前であるため、JSON の内容は、以下のようにセミで括弧で囲む必要があります。

mycallback(
  [
  {"key":"1","val":"test1"},
  {"key":"2","val":"test2"}
  ]
);
于 2013-09-23T02:07:29.393 に答える
0

まず、Bradley が説明したように、JSONP ファイルの構文を修正します。これらの括弧が必要です。これは、ファイルが有効な JavaScript コードである必要があるためです。JSONP は、JavaScript 関数呼び出しを使用してスクリプト ファイルから JSON データをロードするための単なる規則です。

ファイルが静的なままである場合、特にmycallback関数の名前がハードコードされている場合は、おそらくそれをグローバル関数を呼び出すスクリプト ファイルとして扱う必要があります。という名前のグローバル関数を定義し、静的 JSONP/JavaScript ファイルをロードするためにmycallback使用します。$.getScript()

window.mycallback = function( data ) {
    alert( data.toSource() );
};

$.getScript( 'http://www.remote-server/jsonp-test.php' );

?callback=mycallback静的ファイルの場合も必要ないことに注意してください。

于 2013-09-23T02:52:33.437 に答える