我从AJAX调用REST服务方法。
$(document).ready(function () {
var xmml = getXmlLoginRequest();
var wsdlURL = getWSDL('search');
$.ajax({
type: "POST",
url: wsdlURL,
data: xmml,
contentType: "text/xml;charset=utf-8",
dataType: 'text',
success: function (result) {
debugger;
alert(" success" + result);
},
error: function (jqXHR, textStatus, errorThrown) {
debugger;
alert(" error" + "jq :" + jqXHR + "textStatus :" + textStatus + "error : " + errorThrown);
}
});
function getXmlLoginRequest() {
debugger;
var xml = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
<soap:Body> \
<search> \
<qry>svein </qry> \
</search> \
</soap:Body> \
</soap:Envelope>';
return xml;
}
function getWSDL(methodName) {
debugger;
var url = 'http:/MyURL/search.php?username=abc&password=def';
return url;
}
});
我在成功块中获得结果为空。如果我将dataType更改为text
,我会在“失败”块中看到cannot parse NULL
的异常
我写的语法不正确吗?当我使用方法及其参数在浏览器上运行url时,它会给出正确的结果。
答案 0 :(得分:1)
我在这里看到的是SOAP而不是REST。您应该直接尝试jQuery SOAP Plugin而不是jQuery AJAX方法。
此外,WSDL Url不是服务URL,而是服务描述的URL。服务URL位于WSDL中。
由于同源策略,服务应与html页面位于同一域中。
答案 1 :(得分:0)
dataTytpe
只能是xml, json, script, or html
。保留默认值为Intelligent Guess
。
另外,请确保网址wsdlURL
不会违反same-origin policy。