0

このエラーをどうすればよいかわかりません。すべてのリクエストには一意の文字列があります。私が要求しているjsonPは、私が知る限り、必要に応じて構成されたjsonPプロキシです。

var url = 'https://phpproxy-dev.herokuapp.com/?url=http://personer.eniro.se/resultat/'+who+'/'+where+'&callback=?';
        $.getJSON(url, function (data) {
            //console.log(data)
        });

応答:

jQuery19107590448246337473_1375193471216({"status":{"http_code":200},"contents":"//an html page wrapped in a json-object, I can't post it because it hangs chrome when I try to push the code button i stackoverflow. "})

httpsページでグリースモンキーのコードを実行します。

4

3 に答える 3

3

jQuery での JSONP 呼び出しは、次のように機能します。

jQuery はグローバル スコープでコールバック関数を定義します(のような一意の名前を使用jQuery19107590448246337473_1375193471216)。

次に、次のようなコードを返すことが期待されるスクリプトをドキュメントに追加します。

jQuery19107590448246337473_1375193471216(<some JSON data here>);

Greasemonkey の問題は、コードがサンドボックスで機能し、それらのグローバル スコープが実際にはサンドボックスのグローバル スコープであり、実際のウィンドウ スコープ (unsafeWindow) ではないことです。通常、このサンドボックスは外部からアクセスできません。
その結果、要求されたスクリプトはこのコールバック関数の呼び出しに失敗しますjQuery19107590448246337473_1375193471216

ただし、ここでの良い点は、ここで JSONP 呼び出しをまったく必要としないことです。
JSONP はクロスオリジン制限の回避策として開発されました。しかし、GreaseMonkey は、そのような制限がない優れた GM_xmlhttpRequest 関数を提供します。
したがって、JSONP ラッパーを使用せずに、スクリプトから他のドメインに GET リクエストを直接送信できます。

于 2013-08-04T16:44:23.603 に答える
2

どうやら、Greasemonkey は jsonP をサポートしていません。xhr-block を無効にする GM_xmlhttpRequest を使用すると、はるかに成功しました。

于 2013-07-30T16:53:19.870 に答える
2

$.ajax必要な引数を使用して渡してみてください。

var who = "john";
var where = "london";

$.ajax({
    url:'https://phpproxy-dev.herokuapp.com/',
    data: {
        'url':'http://personer.eniro.se/resultat/'+who+'/'+where
    },
    dataType: 'jsonp',
    jsonp: 'callback',
    error: function(jqXHR, textStatus, errorThrown){
        console.log(textStatus + errorThrown);
    },
    success: function(data){
        console.log(data); //data.contents has the HTML
    }   
});

ここで Fiddle を参照してください: http://jsfiddle.net/RaphaelDDL/mZG83/ (この例ではテキストエリアに HTML を出力しています)。

于 2013-07-30T14:32:59.770 に答える