2

jsonpを使用しているときにコールバック関数に関して非常に混乱しています

これがjson形式のjsファイルです http://asla.dev.1over0.com/Guide/js/testjson.js

基本的にはこのjsonです

{"x": 10, "y":15} 

これは私が取得するデータです。これが私のウェブサイトです。クライアントは、クロスドメイン http://www.waveofcolor.com/faq.php にある js ファイルからデータを取得して取得したいと考えています。 js ファイル内のデータ js ファイル http://asla.dev.1over0.com/Guide/js/testjson.jsをスクリプト タグ内に含め、このデータの処理方法をページに伝える関数を宣言する必要があります。ここにコードがあります

function func(json){
alert(json.x) 
}
<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js"></script>

これが私が混乱している部分だと思います。私はこれまでに、スクリプトタグ内で呼び出しているjsファイルの最後にクエリ文字列を追加するだけだと読んだことがあります

<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js"></script>

今は

<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js?jsonp=func"></script> 

私の質問は… jsonp は func 関数を呼び出すことをどのように知っていますか? これはバックエンドで設定する必要がありますか? その場合、PHP または .NET 4.0 Framework を使用してこれをどのように設定しますか。ハードコードしてjsファイル内のfunc関数を呼び出すと、jsonpが機能するようになりました

func({ "x": 10, "y": 15});

しかし、jsファイル内で実際の関数を呼び出すのは意味がありませんよね?

いつものように、どんな入力も大歓迎です

4

1 に答える 1

2

はい、あなたは正しいです。真の JSONP にはバックエンド サポートが必要です。通常、返される JSON も動的になります。そうでない場合 (全員が共有するデータのチャンクが 1 つしかない場合)、関数名をハードコーディングする (より適切なものを選択するfunc) のは大雑把ですが効果的です。

実際の JSONP が必要な場合は、バックエンドで実行するさまざまな方法があります。この簡単なPHP の例と、ASP.NET MVC での JSONP に関するこの質問を参照してください。

于 2012-05-18T22:18:30.757 に答える