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-type并且Code2datatype 没有设置内容类型这是有意的还是我必须做 Voodoo 的东西来使它工作?

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 回答