これは(うまくいけば)簡単な質問です。XDomainRequestを使用してPOSTを介してWebサービスにリクエストを送信する必要があります。私はインターネット上でこれに関するまばらなドキュメントを見つけました、しかし私は誰もこれを理解していないと信じることを拒否します。
これが私のXDomainRequestコードです:
var testURL = 'http://localhost:4989/testendpoint';
//let us check to see if the browser is ie. If it is not, let's
if ($.browser.msie && window.XDomainRequest) {
var xdr2 = new XDomainRequest();
xdr2.open("POST", testURL);
xdr2.timeout = 5000;
xdr2.onerror = function () {
alert('we had an error!');
}
xdr2.onprogress = function () {
alert('we have some progress!');
};
xdr2.onload = function () {
alert('we load the xdr!');
var xml2 = new ActiveXObject("Microsoft.XMLDOM");
xml2.async = true;
xml2.loadXML(xdr2.responseText);
};
//what form should my request take to be sending a string for a POST request?
xdr2.send("thisisastring");
}
私のWebサービス(WCF)は、Webサービスのヘルプページに従って、次のような単一のパラメーターを取ります。
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">String content</string>
これは、他のhttpクライアント(モバイルおよびデスクトップAPI、フィドラー)を介して、Webサービスに渡そうとしているパラメーターと残りの文字列シリアル化を連結する文字列を作成することで機能するようになりました。たとえば、私は試しました:
xdr2.send("thisisastring");
xdr2.send("<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">thisisastring</string>");
ただし、onerrorハンドラーは常に作動します。WCFとは何の関係もないと思います。理由は次のとおりです。
- WCFは、私が呼び出す他のすべてのクライアントで常に成功します。
- それがサービスである場合、onerrorメソッドがトリップすることはありません。ゴミを返しますが、何かを返します。
コンソール(ie9の開発ツールで)を使用してresponseTextをログに記録すると、次のように表示されます。
LOG:undefined
したがって、問題はXDomainRequestの使用方法にあると確信しています。