jQuery制作SOAP请求

时间:2012-08-24 10:12:10

标签: jquery web-services soap

我正在尝试使用Javascript创建SOAP请求,但它似乎不起作用。 请在下方找到已使用过的代码。

URL="http://footballpool.dataaccess.eu/data/info.wso";
xmlStr="<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><AllDefenders xmlns="http://footballpool.dataaccess.eu">   <sCountryName>string</sCountryName></AllDefenders></soap:Body></soap:Envelope>";

jQuery.ajax({
         type: "POST",
         url: URL,
         dataType: "xml",
         processData: false,
         data: xmlStr,
         beforeSend: function(req) {
            req.setRequestHeader("Method", "POST");
            req.setRequestHeader("Content-Type", "text/xml" + "; charset=\"" + "UTF-8" + "\"");
         }
    });

响应:

Object
OPTIONS http://footballpool.dataaccess.eu/data/info.wso 400 (Bad Request)
jquery.js:4 XMLHttpRequest cannot load http://footballpool.dataaccess.eu/data/info.wso. Origin http://www.know7.com is not allowed by Access-Control-Allow-Origin.

我正在尝试从http://footballpool.dataaccess.eu/data/info.wso?op=AllDefenders

获得回复

谢谢..

3 个答案:

答案 0 :(得分:1)

你不能只是从其他域名中调用网址,否则我们就会非常糟糕!您总是需要代理您正在做的事情, PHP .NET 等,您可以调用该端点并接收呼叫并绕过您的javascript呼叫

您收到跨域错误:

  

Access-Control-Allow-Origin不允许原点http://www.know7.com

那会告诉你一切......

如果您拥有此域名,则可以通过创建cross-domain.xml文件将其打开,并添加允许跨域调用的Html标头。


他们为你提供了一种获取JSON的方法,但他们并没有将它包装在一个函数中,所以你总会得到一个错误:

http://jsbin.com/ivobun/1/edit

因此,除了代理服务器外,您无能为力。

答案 1 :(得分:1)

除了Endy的回答之外,您可能希望在Mozilla DevNet上查看有关资源跨域访问的文章,并相关检查服务器响应的HTTP头。具体来说,Access-Control-Allow-Origin标题的内容将告诉您服务器管理员允许哪些域允许访问指定资源。

https://developer.mozilla.org/en-US/docs/HTTP_access_control

答案 2 :(得分:0)

好像您正在尝试跨域执行请求。这是不允许的,只有JSONP是。