3

簡単な質問です。このような静的ファイルがあるかどうか (mockJSON web を使用して生成された JSON)

http://www.webwrx.sk/clients/data.json.txt

このファイルを JSONP に変更するには、どうすればよいですか? どうにかして修正する必要がありますか?api.flickr.com のようなファイルとどう違うのですか?

http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any%20&format=json&jsoncallback= ?

そのファイルに () を追加しました:

http://www.webwrx.sk/clients/data2.json.txt

それでも次のコードは機能しません:

    var params = _.extend({
        'method': 'GET',
        'url': this.url,
        'cache': true,
        'dataType': 'jsonp',
        processData: true
    }, options);

    return $.ajax(params);

助けてくれてありがとう。

4

1 に答える 1

5

JSON と JSONP 形式の唯一の違いは、後者の関数呼び出しの存在です。

JSON:

[ "foo", "bar" ]

JSONP:

callback([ "foo", "bar" ])

呼び出されるので、その名前の関数 (ここでは: callback) がコードで定義されていることを確認してください。

function callback(jsondata) {
  console.log("I got this:", jsondata)
}

jQuery はコールバックの命名を抽象化するため、単純に「jsoncallback=?」を使用できます。URI で (サーバーがパラメーターに従って関数に名前を付けることができるほど柔軟であると仮定して)、匿名関数を jQuery 呼び出しに渡します。jQuery は、自動生成されたランダムな名前に関数を割り当て、URI の疑問符をその名前に置き換えます。ただし、静的ファイルを読み取っている場合は、これを行うことはできません (関数名は固定されているため、jQuery が渡す自動生成された名前に動的に変更することはできません)。これはjQueryを使用した実際の例です(私のものではありません)。

于 2012-12-06T00:27:54.123 に答える