【问题标题】:Unable to get attribute value from xml tag无法从 xml 标签中获取属性值
【发布时间】:2015-11-27 20:40:09
【问题描述】:

我是 AJAX 和 XML 的新手。

我有以下 XML:

<rsp stat="ok">
<auth>
<token>123-123</token>
<perms>read</perms>
<user nsid="id" username="user_name" fullname="Full Name"/>
</auth>
</rsp>

我有以下代码:

 function readXML(xml)
    {
        var xmlDoc = xml.responseXML;
        var x = xmlDoc.getElementsByTagName("user");
        document.getElementById("dummy").innerHTML= x.getAttribute("username"));
window.location.replace("path/info.php?username="+ x.getAttribute("username"));
    }

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function()
    {
        if(xhttp.readyState==4 && xhttp.status==200)
        {
            readXML(xhttp)
        }
    }

    xhttp.open("GET", <?php echo ($url);?>, true);
    xhttp.send();

我无法获得&lt;user&gt; xml 标记的任何属性(nsid、用户名、全名)。我该如何解决这个问题?

【问题讨论】:

    标签: javascript php ajax xml


    【解决方案1】:

    此行末尾有太多右括号)

    document.getElementById("dummy").innerHTML= x.getAttribute("username"));
    

    更新这两行:

    document.getElementById("dummy").innerHTML= x.getAttribute("username"));
    window.location.replace("path/info.php?username="+ x.getAttribute("username"));
    

    document.getElementById("dummy").innerHTML= x[0].getAttribute("username");
    window.location.replace("path/info.php?username="+ x[0].getAttribute("username"));
    

    x 现在是x[0],因为getElementsByTagName 中的xmlDoc.getElementsByTagName("user") 返回一个HTMLCollection,并且您想要此集合中的第一项。

    【讨论】:

      【解决方案2】:

      尝试:

      $xml=simplexml_load_file("FileName.xml") or die("Error: Cannot create object");
      $xml->user['nsid'];
      $xml->user['username'];
      $xml->user['fullname'];
      

      【讨论】:

        【解决方案3】:

        您应该在 JavaScript 中使用用于 ajax/xml 处理的库。最受欢迎的库是jQuery(真的很强大,快来看看吧!)。

        一个使用 jQuery 的简单示例如下所示:(sample os jsFiddle)

        // Callback for processing the response from the server
        var callback = function (data) { 
            var token = data.getElementsByTagName("token");
            var tokenValue = token[0].innerHTML;
        
        
            var user = data.getElementsByTagName("user");
            var usernameAttributeValue = user[0].getAttribute("username");
        };
        
        // Actually calls the server, ajax endpoint, and calls callback on response
        $.ajax(ajaxEndpointUrl).done(callback);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-27
          • 1970-01-01
          • 1970-01-01
          • 2014-05-18
          相关资源
          最近更新 更多