17

jsonpリクエスト(以下のクライアントコード)からのクエリ文字列を見ると、2つのオブジェクトがあります。応答で使用する必要がある「コールバック」文字列(クライアントコードが成功ハンドラーに転送するため)と、キーの_...このアンダースコアは何のためにありますか?私はどのドキュメントにもこれへの参照を見つけることができません、それはある種の数であるように見えます。

エラーハンドラーに転送するために使用される可能性がありますが(オン、コールバックと組み合わせて、またはコールバック文字列のアンダースコアの後の番号を置き換える)、そうではないようです。

url = 'http://localhost:11767/Handlers/MyHandler.ashx';

..。

$.ajax({
    url: url,
    dataType: "jsonp",
    error: function (jqXHR, textStatus, errorThrown) {
        //...
    },
    success : function(d) {
        //...
    }
});

また

    $.getJSON(url + "?callback=?", function(d) {
    }).success(function(d) {
        //...
    }).error(function(jqXHR, textStatus, errorThrown) {
        //...
    }).complete(function(d) {
        //...
    });

これがこれを読むのに役立つ場合の補足:これはjsonpリクエストであるため、例外がクライアント側で発生した場合にのみエラーが発生します。たとえば、タイムアウトや応答のフォーマットに問題があります(つまり、コールバックを使用していません)。これを克服するために、私は常にハンドラーで例外をログに記録して飲み込みますが、例外の状態プロパティとメッセージプロパティを持つ標準の応答オブジェクト(すべての応答で構成されています)を提供します。

4

1 に答える 1

32

参照している番号は、リクエストの日付とタイムスタンプです。番号を取得し、ブラウザのJavaScriptコンソールを使用して次のように入力します。alert(new Date(/*insert number here*/))

日付/時刻が記載されたアラートが表示されます。

編集:

ajaxリクエストに関するjQuery.ajaxドキュメントの抜粋は次のとおりです。

cache
デフォルト:true、dataType'script'および'jsonp'の
場合はfalsefalseに設定すると、要求されたページがブラウザによってキャッシュされないように強制されます。cacheをfalseに設定すると、クエリ文字列パラメータ、、も"_=[TIMESTAMP]"URLに追加されます。

于 2012-10-03T18:26:42.090 に答える