【发布时间】:2015-02-06 10:59:50
【问题描述】:
对于我的一生,我无法弄清楚为什么这个 Ajax SOAP 请求不起作用。
这主要是我在此处找到的代码版本: jQuery AJAX SOAP based web services and CORS (cross origin resource sharing)
当函数运行时,它会在控制台中返回 500 错误。该错误返回包含以下错误的 XML:
<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>
服务器错误日志中没有显示任何内容。我用来生成该请求的 XML 是由 SOAP UI 创建的,并在该上下文中返回正确的信息而没有任何错误。
附加信息:服务器标头已完全正确设置,我可以返回整个 XML 服务而不会出现跨域问题。只有当我尝试发送由“se”变量表示的查询时,我才会遇到麻烦。我已经在存在和不存在的情况下尝试了使用“?WSDL”的代码。我也尝试过同时使用 POST 和 GET(虽然很确定 POST 是可以使用的)。
<script type="text/javascript">
var se = '';
se += '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';
se += '<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/" xmlns:test="http://XXX.YYYY.com/">';
se += '<soapenv:Header/>';
se += '<soapenv:Body>';
se += '<test:GetCurrentProductRelease/>';
se += '</soapenv:Body>';
se += '</soapenv:Envelope>';
$.ajax({
url: 'http://xx.xx.xxx.xxxx/XXXAdminDS/XXXAdminDS.asmx?WSDL',
type: "POST",
dataType: "xml",
data: se,
crossDomain: true,
headers: {"X-Requested-With": "XMLHttpRequest"},
beforeSend: function(xhr) {
xhr.setRequestHeader("SOAPAction", "http://xx.xx.xxx.xxx/XXXAdminDS/XXXAdminDS.asmx?WSDL");
},
// success: function(xml) {
// some code here
// },
// failure: function(xml) {
// more code here
// },
contentType: "charset=UTF-8"
});
}
</script>
【问题讨论】:
标签: jquery ajax web-services soap