Javascript jquery中XMLHttpResponse的XML解析

Javascript jquery中XMLHttpResponse的XML解析,javascript,jquery,xml,Javascript,Jquery,Xml,我得到下面的响应,我想得到sessiontoken的值,即-4611685691785827288 <com.abc.csm.common.LoginResponse> <sessiontoken>-4611685691785827288</sessiontoken> <isSuccess>true</isSuccess> <_-print_-names>false</_-print_-names> <_

我得到下面的响应,我想得到
sessiontoken的值,即
-4611685691785827288

<com.abc.csm.common.LoginResponse>
<sessiontoken>-4611685691785827288</sessiontoken>
<isSuccess>true</isSuccess>
<_-print_-names>false</_-print_-names>
 <_-hash_-code>0</_-hash_-code>
</com.abc.csm.common.LoginResponse><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0     Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
... and so on
在@Vivek:answered之后编辑

$(function() {
    $("#loginSubmitBtn").click(submitLogin);

    function submitLogin()
    {
        if(validate()) //this is true
        {
            $.post("/csm/login.action",function(xml) {
                alert(xml); 
            });
        }
    }
});

基本上,您传输的是两个单独的XML文件连接在一起——一个以
标记开头,另一个是XHTML文档

但您将它们视为单个XML文档。问题是单个XML文档必须只有一个根元素;换句话说,它必须有一个元素环绕整个文档。在您的例子中,这是不正确的,因为
是根元素,但随后结束,
作为新的根元素开始

因此,它不能被XML解析器解析,这就是调用
$(XML)
时要做的


解决方案是在整个文档周围提供一个包装器XML元素,或者在尝试将输出分解为XML之前将其分为两个独立的块。

我认为在jquery中,您可以缩短代码并提高可读性

$.post(url,function(xml) {
        $(xml).find("com.abc.csm.common.LoginResponse").each(function()         {                          
            sessiontoken= $(this).find('sessiontoken').text();  
            alert(sessiontoken);                        
          });                     

    });

由于您只提供了一个片段,很难说清楚,但我认为您的XML是无效的。似乎没有根元素(这可能是因为它是一个片段,而不是全部),我认为不允许使用混合大小写标记或点分隔标记。如果XML无效,尝试使用javascript对其进行操作可能会有问题。你能通过w3验证程序运行它,看看它说了什么吗?@GordonM:我是通过使用
alert($(xml).find('sessiontoken').text()得到的当您拥有JQuery时,为什么要使用原始XMLHttpRequest代码?大多数代码都可以用一次调用
$.ajax()
或其他类似的JQuery函数来替换。@Spudley:你能在这方面举个例子吗?@Abhishek-正如我所说,JQuery提供了ajax功能,它将所有XMLHttpRequest功能封装到一个简单易用的函数中。这有点超出了这个问题的范围,一个好的例子很难放在评论中,因此我建议阅读JQuery手册中的函数页,等等。谢谢,我将第一个xml与另一个xml分开。现在它起作用了。谢谢
$.post(url,function(xml) {
        $(xml).find("com.abc.csm.common.LoginResponse").each(function()         {                          
            sessiontoken= $(this).find('sessiontoken').text();  
            alert(sessiontoken);                        
          });                     

    });