Javascript XMLHTTPResquest.setRequestHeader()未添加自定义页面标题

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

我正在尝试使用AJAX调用SOAP调用(不是跨站点的,所以在代理等方面不会遇到困难)
但是,这需要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不会用空值设置新的头,并且我调用的变量在错误的范围内。谢谢