aWe*_*per 55 javascript jquery
当我在Chrome控制台中检查以下代码时,它会向我显示一个请求标头 Accept:undefined
jQuery.ajax({
url: _this.attr('href'),
accepts: "application/json; charset=utf-8",
});
});
Run Code Online (Sandbox Code Playgroud)
如何将接受类型设置为json.我不想设置自定义标头或使用beforeSend
kar*_*ick 58
试试这个 ,
$.ajax({
headers: {
Accept: "text/plain; charset=utf-8",
"Content-Type": "text/plain; charset=utf-8"
}
data: "data",
success : function(response) {
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
看这篇文章以供参考:
gau*_*171 34
有两种方法可以设置接受标头,如下所示:
1) setRequestHeader('Accept','application/json; charset=utf-8');
2) $.ajax({
dataType: ($.browser.msie) ? "text" : "json",
accepts: {
text: "application/json"
}
});
Run Code Online (Sandbox Code Playgroud)
kop*_*por 16
在最新版本的jQuery中,将"dataType"设置为适当的值也会设置接受标头.例如,dataType: "json"将accept标头设置为Accept: application/json, text/javascript, */*; q=0.01.
Rom*_*ter 12
其他答案没有回答实际问题,而是提供了一个令人遗憾的解决方法,因为它确实花了10秒钟来确定accepts参数的正确语法.
该accepts参数采用一个映射dataType到Accept标题的对象.在您的情况下,您甚至不需要传递accepts对象,因为将数据类型设置json为足够.但是,如果您确实要配置自定义Accept标头,则执行以下操作:
accepts: {"*": "my custom mime type" },
我怎么知道?打开jquery的源代码并搜索"接受".第一个发现告诉你所有你需要知道的:
accepts: {
"*": allTypes,
text: "text/plain",
html: "text/html",
xml: "application/xml, text/xml",
json: "application/json, text/javascript"
},
Run Code Online (Sandbox Code Playgroud)
正如你所看到的为默认映射text,html,xml和json数据类型.
小智 6
试试这个:
$.ajax({
beforeSend: function (xhr){
xhr.setRequestHeader("Content-Type","application/json");
xhr.setRequestHeader("Accept","text/json");
},
type: "POST",
//........
});
Run Code Online (Sandbox Code Playgroud)
您已经将 Accepts 参数确定为您想要的参数,并且 keyur 正确地向您展示了设置它的正确方法,但是如果您将 DataType 设置为“json”,那么它会自动将 Accepts 的默认值设置为您想要的值根据jQuery 参考。所以你需要的是:
jQuery.ajax({
url: _this.attr('href'),
dataType: "json"
});
Run Code Online (Sandbox Code Playgroud)
小智 5
虽然其中一些是正确的,但我发现以前的回答相当混乱.同时,OP要求解决方案而不设置自定义标题或使用beforeSend,所以我一直在寻找更清晰的解释.我希望我的结论能为其他人提供一些启示.
代码
jQuery.ajax({
....
accepts: "application/json; charset=utf-8",
....
});
Run Code Online (Sandbox Code Playgroud)
不起作用,因为根据jQuery doc(http://api.jquery.com/jquery.ajax/)accepts必须是PlainObject(不是).具体来说,jQuery期望零或多个键值对与每个键值对与它们所接受的MIME类型相关联.所以我最终使用的是:StringdataType
jQuery.ajax({
....
dataType: 'json',
accepts: {
json: 'application/json'
},
....
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100866 次 |
| 最近记录: |