Javascript XMLHTTPResquest.setRequestHeader()未添加自定义页面标题
我正在尝试使用AJAX调用SOAP调用(不是跨站点的,所以在代理等方面不会遇到困难)Javascript XMLHTTPResquest.setRequestHeader()未添加自定义页面标题,javascript,jquery,ajax,soap,xmlhttprequest,Javascript,Jquery,Ajax,Soap,Xmlhttprequest,我正在尝试使用AJAX调用SOAP调用(不是跨站点的,所以在代理等方面不会遇到困难) 但是,这需要XHR中的两个自定义头SOAPTarget和SOAPAction。目前,我使用jQuery进行ajax调用,如下所示: jQuery.ajax({ url: this.location, type: 'POST', data: sm, dataType: "xml", contentType: "
但是,这需要XHR中的两个自定义头SOAPTarget和SOAPAction。目前,我使用jQuery进行ajax调用,如下所示:
jQuery.ajax({
url: this.location,
type: 'POST',
data: sm,
dataType: "xml",
contentType: "text/xml",
processData: false,
beforeSend: function(xhr){
xhr.setRequestHeader(
"SOAPTarget",
this.location
);
xhr.setRequestHeader(
"SOAPAction",
this.urn
);
},
success: jQuery.jSOAPClient.success,
error: jQuery.jSOAPClient.error
});
代码都按预期执行,但是当我在Firebug中查看标题时,它们没有变化。我最近遇到了类似的问题。不要使用“beforeSend”,请尝试使用。XHR将不接受具有空值的请求头,并且,事实证明,此块中的
this
指的是Ajax调用,而不是Ajax调用所属的对象
这个问题可能应该改名为“noob错误发生”。运行了一个测试,它在Safari和FF上对我有效。确保检查“请求头”。在那之后,检查服务器端只是为了确保。感谢您查看它!这对你来说很有意思。最终的答案是一个范围问题。我想您没有运行的测试的副本吗?作为旁注,我一直在使用“header:”标记来代替“beforeSend”<代码>标题:{SOAPAction:requestList[reqItem].SOAPAction,SOAPTarget:requestList[reqItem].SOAPTarget}它避免了函数调用的开销。虽然这不起作用,但它帮助我逐步将代码放到正确的位置。结果证明XHR不会用空值设置新的头,并且我调用的变量在错误的范围内。谢谢