42

このコードを使用して、クロスドメインの JSONP 呼び出しを行っています。

jQuery.ajax({
        async: true,
        url: 'http://mnews.hostoi.com/test.json',
        dataType: 'jsonp',
        method: "GET",
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus + ': ' + errorThrown);
        },
        success: function (data, textStatus, jqXHR) {
            if (data.Error || data.Response) {
                exists = 0;
            }
        }
    });

Firebug でデバッグすると、次のエラーが発生します。

ここに画像の説明を入力

SyntaxError: missing ; before statement

ただし、jsonlint.com などのツールを使用して json オブジェクト (JQ コードのリンクから入手可能) を渡すと、有効な JSON であると表示されます。また異常も見当たりません。どのようにして構文エラーを返すのでしょうか? 私が取得していないJSONPの詳細ですか、それとも何ですか?

JSON サンプル

{"news":[ {
  "sentences": [
    "Neuroscientists have discovered abnormal neural activity...", 
    "The researchers found that these mice showed many symptoms...", 
    "\"Therefore,\" the study authors say, \"our findings provide a novel.."
  ], 
  "summaryId": "ZJEmY5", 
  "title": "Abnormal neural activity linked to schizophrenia"
}]}

前もって感謝します。

4

6 に答える 6

4

これが実際の例です

$.ajax({
 type: 'GET',
 url: 'http://xxx.amazonaws.com/file.json',
 dataType: 'jsonp',
 jsonpCallback: 'callback',
 success: function(json){
   console.log(json);
 }
});

そして、あなたのlikecallbackの最初に入れる必要があります:file.json

callback({"item":{".......

于 2015-07-24T08:29:19.710 に答える
2

epascarelloが指摘したように、JSONP 応答は次のように送信する必要があります。

callBackFunction({ JSON Object })

そして、呼び出し元関数は次のように設定できます。

var url =  "http://someremoteurl.com/json";
    $.getJSON(url + "?callback=?", null, function(data) {
    callBackFunction(data);
});

次に、応答データを次のようにループできます。

function callBackFunction(data)
{
   console.log(data);
}
于 2014-05-01T08:02:31.680 に答える
1

" callback=? " パラメータを使用している場合、サーバー側の応答は次のようになります。

$_callback = $_GET['callback'];    
echo $_callback . '(' . json_encode(YOUR_VARIABLE) . ');';

" callback=? " パラメータが定義されていない場合、応答は次のようになります。

echo '[' . json_encode($_return_array) . ']';
于 2016-02-17T06:16:36.200 に答える
0

質問が Ruby に関連している場合は、コントローラーでフォーマットが正しくレンダリングされていることを確認してください。例:

def view_product
   data = Product.find params[:id]
   render :json =>  data, :callback => params[:callback]
end

render メソッドでは、:callbackパラメータが必要です。そうしないと、jsonp ではなく json でレンダリングされます。

于 2014-08-10T05:50:44.013 に答える