2011-10-21 83 views
1

我試圖使用AJAX調用make一個SOAP調用(不是跨站點,所以它不應該遇到與代理等困難)
但是,這需要XHR,SOAPTarget和SOAPAction中的兩個自定義標題。目前,我使用jQuery使Ajax調用就像這樣:XMLHTTPResquest.setRequestHeader()不添加自定義頁眉

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查看頭,還有對他們沒有任何變化。

+0

經過測試,它在Safari和FF上爲我工作。確保你檢查了「請求標題」。之後,請確認服務器方面的情況。 – airportyh

+0

感謝您的關注!有趣的是,這對你有用。最終的答案竟然是一個範圍界定問題。我不認爲你有一份你運行的測試的副本? –

+0

作爲一個附註,我一直使用「header:」標籤來代替「beforeSend」。 'header:{SOAPAction:requestList [reqItem] .SOAPAction,SOAPTarget:requestList [reqItem] .SOAPTarget}'它避免了函數調用的開銷。 – Richard

回答

2

XHR不會接受帶有空值的請求頭,事實證明,該塊中的this引用的是Ajax調用,而不是ajax調用所包含的對象。

這個問題應該重新命名爲「noob errors occurred」。

1

我最近有一個類似的問題。而不是使用'beforeSend'嘗試使用ajaxSend

+0

雖然這不起作用,但它幫助我逐步完成代碼到恰當的位置。原來,XHR不會設置一個空白值的新標題,而我所調用的變量在錯誤的範圍內。謝謝! –