【发布时间】:2013-11-16 20:36:44
【问题描述】:
道歉。我知道这种类型的问题被问了好几次并得到了回答。我真的花了整整一天的时间,找不到任何解决方案。
我正在使用 Jquery SOAP API 提交 WSDL 请求并获得响应。我可以提交请求,也可以收到回复。
AJAX 代码
$(document).ready(function() {
$('#btn_click').click(function(e) {
// stop the form to be submitted...
e.preventDefault();
var data = $('#txt_userid').val();
data = formUserNameReqXML(data);
$.soap({
url: 'service ws*l url',
method: 'getUserName',
data: data,
success: function(xml) {
$('#feedback').text(xml);
alert($(xml).find('username').text());
},
error: function(SOAPResponse) {
$('#feedback').text(SOAPResponse.toString());
}
});
});
});
返回的 XML 如下所示
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:localhost-jeema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getUserNameResponse>
<username xsi:type="xsd:string">SUCCESS</username>
</ns1:getUserNameResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我想获取“用户名”标签内的值。与上面的 AJAX 代码一样,“反馈”元素加载了响应 XML 字符串(没有换行符),但警报消息显示为空。为什么alert里面收到的值是空的?
有趣的是,当我尝试使用下面给出的简单 AJAX 时,相同的 XML 解析得非常完美。
$(document).ready(function() {
$('#btn_click').click(function(e) {
$.ajax({
type: "POST",
url: "response.xml",
dataType: "xml",
success: function(xml) {
alert($(xml).find('username').text());
},
error:function() { alert('outside'); }
});
});
});
在这方面需要一些专家的建议。
【问题讨论】:
-
不确定我明白了,问题是?
-
对不起,如果我的查询令人困惑。我的问题是为什么我的 SOAP Ajax 调用中的值返回空,即使“用户名”在我的响应中是一个有效的 XML 标记?
标签: jquery ajax web-services