【问题标题】:Parsing XML returned from SOAP Jquery plugin解析从 SOAP Jquery 插件返回的 XML
【发布时间】: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


【解决方案1】:

终于成功解析了XML

success: function(xml) {
  var xml = xml.toString();
  alert($(xml).find('username').text());
}

解析发生在我将 xml 变量转换为字符串之后。

【讨论】:

  • 我也面临同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多