【问题标题】:Using $.xml2Json return a complicated object使用 $.xml2Json 返回一个复杂的对象
【发布时间】:2013-01-21 00:24:36
【问题描述】:

我有这个代码:

$.ajax({
    type: "GET",
    url: trgUrl,
    success: function (data)
    {
        var xml= $.parseXML(data);
                               {
        var obj= $.xml2json(xml);

        //....
    }
 });

data 可以是这样的:

 "<name> Mike </name>"

现在,问题是在使用$.xml2json(xml)之后,为了显示我需要写的名字:

 alert(obj.name.value); // Mike

而不仅仅是:

 alert(obj.name);    // object object

换句话说:$.xml2json&lt;name&gt; 的内容转换为另一个对象(而不是使其成为直接字符串)

我该如何解决这个问题?有人遇到过这个问题吗?

【问题讨论】:

  • 尝试在 ajax 调用中将dataType 设置为'xml' 并跳过$.parseXml 部分。直接传递数据对象。我自己用过xml2json,没有这个问题。
  • 我试过了,但得到了相同的结果。你用过 xml2json() 还是 $.xml2json() ?
  • 很确定是$.xml2json,但我要等到明天我回去工作时才能检查..
  • 非常感谢您的帮助。
  • jsfiddle.net/rB4Dy这是我使用的版本,请试用。

标签: javascript jquery json jquery-plugins xml-parsing


【解决方案1】:

修改插件如下:

// Add element value
if(node.childElementCount == 0 && node.textContent != null && node.textContent != "") {
         /* comment out ".value" */
         result[node.nodeName]/*.value */= node.textContent.trim();
}

演示:http://jsfiddle.net/ycN37/

如果节点有子节点,这可能会产生问题,这可能是作者首先创建对象的原因

【讨论】:

  • 但是你的解决方案能解决这个问题吗(关于你的最后一句话)?
  • 取决于你的 xml 的样子。你试过了吗?为什么在对象中使用value 属性这么难?
  • 我的 xml 比我使用的简单示例要复杂得多,而且我已经编写了函数来处理转换后的对象,只是它的行为不像我希望的那样。无论如何,您发现的内容与我的问题一致(我没有想到,也没有在我的 ajax 代码中做错什么,这是一个开始......)。
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
相关资源
最近更新 更多