2012-05-16 51 views
0

这是(希望)一个简单的问题。我必须通过POST使用XDomainRequest向Web服务提交请求。我在互联网上发现了这个稀少的文档,但我拒绝相信没有人知道这一点。XDomainRequest POST与XML ...我做错了什么?

这里是我的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,fiddler)获得此功能,该串将我想要传递给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。

回答

0

如果有人遇到这个问题,我最终将我的web服务转换为返回JSON格式的数据。使用JSON否定了对XDomainRequest的需求,允许我使用常规的ajax jQuery工具。

+0

你是否得到了解决方案。我面临同样的问题。 – Amit

+0

没有。在我必须构建POST要求之前,我更换了工作。对于其余部分,我将它转换为JSON。不知道你是否可以发布到JSON或不在IE浏览器,但我要检查了这一点:http://stackoverflow.com/questions/5093582/json-is-undefined-error-in-ie-only我改变之前工作。抱歉! – jdb1a1