这是(希望)一个简单的问题。我必须通过带有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");
}
我的网络服务(WCF)根据网络服务的帮助页面获取一个参数,如下所示:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">String content</string>
我已经通过其他http客户端(移动和桌面API,fiddler)通过构建一个字符串来实现这一点,该字符串将我尝试传递给Web服务的参数与其他字符串序列化连接起来。例如,我尝试过:
xdr2.send("thisisastring");
xdr2.send("<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">thisisastring</string>");
但是onerror处理程序总是被触发。我不认为它与WCF有任何关系,因为:
当我使用控制台(在ie9中的开发工具中)记录responseText时,它说:
LOG:undefined
所以我很确定问题在于我如何使用XDomainRequest。
答案 0 :(得分:0)
如果遇到任何人,我最终转换我的Web服务以返回JSON格式的数据。使用JSON消除了对XDomainRequest的需求,允许我使用传统的ajax jquery工具。