Javascript 将头参数传递给jqueryajax
当我在Chrome控制台中检查以下代码时,它会显示一个请求头Javascript 将头参数传递给jqueryajax,javascript,jquery,Javascript,Jquery,当我在Chrome控制台中检查以下代码时,它会显示一个请求头Accept:undefined jQuery.ajax({ url: _this.attr('href'), accepts: "application/json; charset=utf-8", }); }); 如何将accept类型设置为JSON。我不想在发送前设置自定义标题或使用试试这个 $.ajax({ headers: {
Accept:undefined
jQuery.ajax({
url: _this.attr('href'),
accepts: "application/json; charset=utf-8",
});
});
如何将accept类型设置为JSON。我不想在发送前设置自定义标题或使用
试试这个
$.ajax({
headers: {
Accept: "text/plain; charset=utf-8",
"Content-Type": "text/plain; charset=utf-8"
}
data: "data",
success : function(response) {
// ...
}
});
请参阅本帖:
设置accept标头有两种可选方法,如下所示:
1) setRequestHeader('Accept','application/json; charset=utf-8');
2) $.ajax({
dataType: ($.browser.msie) ? "text" : "json",
accepts: {
text: "application/json"
}
});
试试这个:
$.ajax({
beforeSend: function (xhr){
xhr.setRequestHeader("Content-Type","application/json");
xhr.setRequestHeader("Accept","text/json");
},
type: "POST",
//........
});
您已经将accepts参数标识为您想要的参数,并且keyur正确地向您展示了设置它的正确方法,但是如果您将DataType设置为“json”,那么它将自动将accepts的默认值设置为您想要的值。因此,您所需要的是:
jQuery.ajax({
url: _this.attr('href'),
dataType: "json"
});
我使用jQuery.getJSON(url[,data][,success(data,textStatus,jqXHR)])
例如:
var url="my.php";
$.getJSON( url, myObj )
.done(function( json ) { ... }) /* got JSON from server */
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Failed to obtain JSON data from server: " + err );
}); /* failed to get JSON */
getJSON是以下内容的简写:
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
虽然其中一些是正确的,但我发现前面的回答相当混乱。同时,OP要求提供一个解决方案,但没有设置自定义标题或在发送前使用
,因此我一直在寻找更清晰的解释。我希望我的结论能给其他人一些启示
代码
jQuery.ajax({
....
accepts: "application/json; charset=utf-8",
....
});
不起作用,因为根据jQuery文档(),接受的必须是纯对象(而不是字符串)。具体地说,jQuery需要零个或多个键值对,将每个数据类型与它们接受的MIME类型关联起来。因此,我最终使用的是:
jQuery.ajax({
....
dataType: 'json',
accepts: {
json: 'application/json'
},
....
});
在jQuery的最新版本中,将“dataType”设置为适当的值也会设置accepts标头。例如,dataType:“json”
将accept头设置为accept:application/json,text/javascript,*/*;q=0.01
其他答案并没有回答实际问题,而是提供了一些变通方法,这是一个遗憾,因为要找出的正确语法接受
参数需要10秒钟
Accept
参数获取一个对象,该对象将dataType
映射到Accept
头。在您的情况下,甚至不需要传递accepts
对象,因为将数据类型设置为json
就足够了。但是,如果要配置自定义接受标题,请执行以下操作:
接受:{“*”:“我的自定义mime类型”},
我怎么知道?打开jquery的源代码并搜索“accepts”。第一次发现就告诉您需要知道的一切:
accepts: {
"*": allTypes,
text: "text/plain",
html: "text/html",
xml: "application/xml, text/xml",
json: "application/json, text/javascript"
},
正如您所看到的,text
、html
、xml
和json
数据类型的默认映射。chcek是第一个参数。我知道我可以传递标题,但为什么它不能与accepts+1一起工作呢?很好,修复了我的另一个问题。IE的“text”值让我很头疼。这对我不起作用(jQuery 1.9.1)。Accept头被设置为*.
(至少在Chrome和Firefox中)。使用karthick的“headers”选项确实有效。是的,没错,它是一个PlainObject
,但没有解释键应该是什么……这是我可以使用的唯一解决方案,我使用的是jQuery 2.0+