$ .ajaxSetup不为Get请求设置内容类型

时间:2012-04-10 17:25:39

标签: jquery asp.net ajax content-type pagemethods

代码1

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

Request Response for Code1

代码2

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

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

Request Response for Code 2

Code1有效地设置content-typedatatype Code2没有设置内容类型是这个意图还是让我做Voodoo的东西让它工作?

2 个答案:

答案 0 :(得分: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。它可能是一个错误,因为在ajaxSetup中设置了contentType,但我对此并不乐观。

答案 1 :(得分:1)

$.ajaxSetup保留所有ajax请求的大多数默认选项,但自行发送ajax请求。

但是$.ajax是发送请求的实际函数。


代码1

它只是使用综合方法$.ajax()

发送GET Ajax请求

代码2

在发送任何请求之前设置所有ajax请求的默认选项。然后,当使用$ .get进行实际请求时,不再需要定义此参数。


<强>更新

这似乎是一个错误。在没有任何数据的情况下发送$.get请求时会出现此类问题。检查here。您需要使用firebug或类似的方式查看请求标头。