Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将头参数传递给jqueryajax_Javascript_Jquery - Fatal编程技术网

Javascript 将头参数传递给jqueryajax

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: {

当我在Chrome控制台中检查以下代码时,它会显示一个请求头
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+