$.ajax({url:"1.aspx/HelloWorld",type:"GET",dataType:"json",contentType:"application/json"});
$.ajaxSetup({
contentType: "application/json",
dataType: "json"
});
$.get("1.aspx/HelloWorld","",$.noop,"json");
Code1有效地设置content-type
和datatype
Code2没有设置内容类型是这个意图还是让我做Voodoo的东西让它工作?
答案 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()
在代码2 :
上在发送任何请求之前设置所有ajax请求的默认选项。然后,当使用$ .get进行实际请求时,不再需要定义此参数。
<强>更新强>
这似乎是一个错误。在没有任何数据的情况下发送$.get
请求时会出现此类问题。检查here。您需要使用firebug或类似的方式查看请求标头。