0

クロスドメインをサポートする PHP サーバーからデータにアクセスしようとしています。$.ajax を dataType : 'jsonp' で試すと、コンソールにエラーが表示されます: Uncaught SyntaxError: Unexpected token ファイルは JavaScript ファイルとして解釈され、リクエストは失敗します。このエラーなしでデータを取得するためのアイデアはありますか。

$.ajax({
    url : 'http://domaine.com/json.php',
    contentType: "application/json; charset=utf-8",
    dataType : 'jsonp',
    success : function(data){
        console.log(data);
        // no enter in this callback
    },
    complete: function(data1, data2, data3){
        // no data from file.js
    }
});
4

2 に答える 2

4

まず、PHPスクリプトがJSONPをサポートしていることを確認してください。スクリプトがJSONPを返すように、渡す必要のあるクエリ文字列パラメーターを特定します。次に、アドレスバーに次のアドレスを直接入力して、ブラウザでテストします。

http://domain.com/json.php?callback=abc

次の線に沿って何かが表示されるはずです。

abc({ ... some JSON here ... })

callbackPHPスクリプトが別のパラメーターを予期している場合は、nameパラメーターを調整する必要がある場合があります。これは、次の出力が表示された場合に当てはまる可能性があります({ ... some JSON here ... }javascript関数にラップされていない場合)

そして、JSONPを返す有効なPHPスクリプトがあることを確認したら、それを使用できます。

$.ajax({
    url : 'http://domain.com/json.php',
    jsonp: 'callback',
    dataType : 'jsonp',
    success : function(data){
        console.log(data);
        // no enter in this callback
    },
    complete: function(data1, data2, data3){
        // no data from file.js
    }
});

注意事項:

  1. jsonp: 'callback'パラメータを使用してコールバックを指定しました
  2. contentType: 'application/json'jQueryのJSONPの実装ではscript、リクエストヘッダーを設定できないタグを使用しているため、パラメーターを削除しました。
于 2013-02-24T17:49:49.737 に答える
1

?callback=?適切なコールバックが評価されるように、リクエストに追加する必要があります。ただし、呼び出されない場合がcallbackあります。あなたはそれがドメインから何と呼ばれているのかを知る必要があります。

ドメイン(およびブラウザー)がCORSをサポートしている場合は、JSONPを使用する必要もありません。通常のリクエストを使用できます。

于 2013-02-24T17:49:41.887 に答える