1

私はJSONPの初心者なので、誰かがゼロから助けてくれることを願っています。

基本的に私の状況は次のとおりです。

CMSを備えたサーバーがあります。CMSからの情報を他のいくつかのサイトに表示したい。

ですから、送信したい情報をPHP変数に入れることを考えています(しかし、確信が持てません)。次に使用します

echo json_encode($json);

次に、JQueryを使用して情報を表示したいサイトで次のことを行います。

$.ajax({
  url: 'http://www.mycmssite.com/phppage.php?json',
  dataType: 'json',
  data: json,
  success: callback
});

var myvar = success;
document.write(myvar);

これが私の予備的な理解であり、私はその穴がたくさんあることを知っています。しかし、誰かが私を正しい方向に向けることができれば、それは素晴らしいことです!

ヒープに感謝します!

4

2 に答える 2

0

dataType: 'jsonp'代わりに、Ajaxリクエストで指定されていることを確認してください。これにより、呼び出しで同一生成元ポリシーを回避し、jQueryで生成されたコールバック関数名を追加できます。

サーバースクリプトが、コールバック関数名が渡されたこと、およびその関数内で応答をラップしていることを検出できることを確認してください。

たとえば、サービスがコールバックで呼び出された場合:

http://www.mycmssite.com/phppage.php?json=1&callback= jQuery17109598642324563116

応答は次のようになります。

jQuery17109598642324563116({json response here})

また、successプロパティは、受信したJSONデータに対してロジックを実行する既存の関数に設定する必要があります。

于 2012-06-05T11:09:57.133 に答える
0
$.ajax({
    url: 'http://www.mycmssite.com/phppage.php?json',
    dataType: 'json',
    data: {Iwant:'theData', thisIs:'somejson'},
    success: function(msg) {
        console.log('server answered:', msg);
        // do something with received message
    }
});

CORSヘッダーはより似ています

header("Access-Control-Allow-Origin", "*")
header("Access-Control-Request-Method", "GET")
header("content-type", "application/x-javascript")

これらのヘッダーにより、JSONPの要件は廃止されました。

于 2012-06-05T11:10:27.940 に答える