2013-03-12 58 views
0

我在jQuery中传递ajax调用中的标头时遇到问题。在jquery中传递标头与ajax

$.ajax({ 
    url: '/resources/ajax/customize.aspx?' + qs + '&nocache=' + Math.random(), 
    contentType: "application/json", 
    headers: values, 
    context: $this, 
    cache: false, 
    success: function(data) { 
      //do stuff here 
    } 
}); 

在大多数情况下,它会获得标题值正确,但有时它不会获取任何标题值。我确信'值'变量包含数据。我想知道是否有任何特定的情况下,标题不会通过Ajax?

更新: 我想它是:

$.ajax({ 
    url: '/resources/ajax/customize.aspx?' + qs + '&nocache=' + Math.random(), 
    contentType: "application/json", 
    beforeSend: function(xhr) { xhr.setRequestHeader('values',values); }, 
    //headers: values, 
    context: $this, 
    cache: false, 
    success: function(data) { 
        //do stuff here 
    } 
}); 

,没有运气这一点。

更新2

想通了这个问题。有一个带有换行符的URL变量,所以换行符导致头文件不能被传递。

+1

如果您已经添加'cache:false',为什么要传递'nocache'参数? – Blender 2013-03-12 20:20:50

+1

你传递了​​什么标题?它是特定于浏览器的吗?马比http://stackoverflow.com/questions/7433556/jquery-jsonp-ajax-authentication-header-not-being-set有帮助吗? – 2013-03-12 20:21:17

+0

可能是[this]的副本(http://stackoverflow.com/questions/3258645/pass-request-headers-in-a-jquery-ajax-get-call)问题? – 2013-03-12 20:23:13

回答

1

我正面临同样的问题。通过使用jquery(或者在JS中执行)$ .trim()方法来消除换行符。就我而言,我知道\ n \ r不会成为合法价值的一部分。这必须检查修剪来修复它。

+1

感谢您的评论,我有很久以前就解决了。你是对的,这完全是关于换行。只要你删除它们,它工作得很好。 – 2013-09-17 14:24:22