2011-10-21 10 views
1

AJAXを使用してSOAP呼び出しを呼び出そうとしています(クロスサイトではないため、プロキシなどで問題にならないようにしてください)
ただし、これには、XHR、SOAPTarget、およびSOAPActionの2つのカスタムヘッダーが必要です。現在、私はそうのようなAJAX呼び出しを作るためにjQueryを使用しています:予想通り、私はFirebugのでヘッダーを表示する場合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 
    }); 

コードのすべての実行を、しかし、彼らには変化はありません。

+0

私はSafariとFFでテストしました。 「要求ヘッダー」を確認してください。その後、サーバー側を確認してください。 – airportyh

+0

それを調べてくれてありがとう!それがあなたに役立ったのは面白いです。最後の答えは、スコープの問題であることが判明しました。私はあなたが走ったテストのコピーを持っているとは思わない? –

+0

補足として、私は "beforeSend"の代わりに "header:"タグを使用しています。 'headers:{SOAPAction:requestList [reqItem] .SOAPAction、SOAPTarget:requestList [reqItem] .SOAPTarget}'これは、関数呼び出しのオーバーヘッドを回避します。 – Richard

答えて

2

XHRはnull値のリクエストヘッダーを受け入れず、このブロックのthisは、ajax呼び出しが含まれているオブジェクトではなく、Ajax呼び出しを参照します。

この質問は、おそらく「noob mistakes happen」という名前に変更する必要があります。

1

私は最近同様の問題がありました。 'beforeSend'を使用する代わりにajaxSendを試してみてください。

+0

これはうまくいきませんでしたが、それは私が正しい場所にコードをステップアップするのに役立ちました。 XHRは空白の値で新しいヘッダーを設定しませんが、私が呼んでいた変数は間違った範囲にあります。ありがとう! –

関連する問題