2012-10-03 46 views
15

jsonpリクエスト(以下のクライアントコード)からクエリ文字列を見ると、レスポンスで使用する必要がある "コールバック"文字列(クライアントコードが成功ハンドラに送られる)と1つ"_"のキーで...このアンダースコアは何ですか?私はどのドキュメントでもこれを参照することはできませんが、いくつかの種類のようです。jQuery jsonp ajaxリクエストのクエリ文字列のアンダースコアは何ですか?

エラーハンドラ(コールバックとの組み合わせで、またはコールバック文字列のアンダースコアの後にある数字の代わりに)のエラーハンドラに向けるのに使用できますが、そのようには見えません。

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要求であるとして、エラーが唯一の例外た場合にヒットしますクライアント側で発生します。これを克服するために、応答の書式設定にタイムアウトや問題があります(コールバックを使用しないなど)。私は常にハンドラ内で例外を記録して呑み込みますが、標準の応答オブジェクト(すべての応答が構成されます)例外の状態プロパティとメッセージプロパティがあります。

+0

JSONPリクエストがスクリプトタグを挿入してエラーハンドラを持たないため、エラーハンドラのためのコードはほとんどありませんので、上記コードのエラー関数は決して発生しません。ほとんどの場合、アンダースコアはXMLHttpRequestに関連するものではないでしょうか? – adeneo

+0

@adeneo - 私は同じ結論に達しました(しかし、下のREでエラーハンドラを読みましたが)。下線は関連していないかもしれませんが、私はちょうどそれが何で、どこから来たのか、どんな使い方だったのだろうと思っただけです。 –

答えて

29

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

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

編集:ここでは

だAJAX要求についてjQuery.ajaxドキュメントからの抜粋:

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

+0

ありがとうございます。これはどこに書かれていますか? –

+0

@MrShoubs私は、ドキュメントとリンクのスニペットを含む答えを更新しました。 –

関連する問題