2

コード 1

$.ajax({url:"1.aspx/HelloWorld",type:"GET",dataType:"json",contentType:"application/json"});

Code1 のリクエスト応答

コード 2

$.ajaxSetup({
   contentType: "application/json",
   dataType: "json"
});

$.get("1.aspx/HelloWorld","",$.noop,"json");

コード 2 の応答を要求する

Code1 は両方を効果的に設定しcontent-typedatatype Code2 は content-type を設定しません。

4

2 に答える 2

3

ajaxメソッドのクイックラッパーを作成するだけです。

$.myAjax = function(url,data){
    return $.ajax({
        contentType: "application/json",
        url: url,
        data: data || {},
        type: "GET",
        dataType: "json"
    });
}
// used with
$.myAjax("foobar.asp").done(function(data){
    console.log(data);
}).fail(function(){
    console.log(arguments);
});

ヘッダーが渡されない理由は、指定されたリクエストにcontentTypeが指定されておらず、データがない場合、contentTypeが設定されていないためです。contentTypeがajaxSetupで設定されているため、バグである可能性がありますが、私はそれについて肯定的ではありません。

于 2012-04-11T05:33:39.287 に答える
1

$.ajaxSetupすべての ajax リクエストのほとんどのデフォルト オプションを保持しますが、 ajax リクエスト自体は送信しません

しかし$.ajax、リクエストを送信する実際の関数です。


コード 1で:

包括的なメソッドでGET Ajaxリクエストを送信するだけです$.ajax()

コード 2で:

すべての ajax リクエストのデフォルト オプションは、リクエストが送信される前に設定されます。その後、$.get を使用して実際のリクエストが行われると、このパラメーターを定義する必要がなくなります。


アップデート

これはバグのようです。$.getこのような問題は、データなしでリクエストを送信しているときに発生します。ここで確認してください。firebug などを使用してリクエスト ヘッダーを表示する必要があります。

于 2012-04-10T17:29:51.477 に答える