jQuery:在这种情况下如何选择属性?

时间:2011-08-19 20:36:50

标签: jquery xml

在我的jQuery ajax方法中,它返回的“数据”格式如下:

<root>
    <result sender='BlackSmith' nickName='Blac'></result>
    <result sender='AristleJohnson' nickName='AJ'></result>
    .
    .
    .
</root>

在我的jQuery函数中,我的代码是:

$(data).find('result').each(function(){ 
    alert("test");//it never shows up, I don't know why?
    var userId=$(this).attr('sender');
    var nickName=$(this).attr('nickName');
});

但是,警报永远不会显示,这意味着$(data).find('result')在这里不起作用。你可以帮帮我吗?谢谢。

3 个答案:

答案 0 :(得分:0)

假设您将ajax调用的返回值分配给数据变量,一切看起来都很好 - 有些事情需要检查:

  • 尝试将dataType显式设置为XML
  • 仔细检查您从服务器返回的内容以及响应不是500ing,404ing或因任何其他原因返回空响应

答案 1 :(得分:0)

我首先想到的是,您的数据集实际上并不包含响应。 $(data).find...实际上是在AJAX调用中吗?一旦离开success:函数的范围,您的响应将被销毁。

所以最重要的是,检查范围:

$.ajax({
        type: "GET",
        url: "[yoururl]",
        dataType: "xml",
        success: function(data) {
          //this is the only place your $(data) selector will work...
    }
});

如果您想在其他地方使用数据,则必须将其从ajax调用中传出。

答案 2 :(得分:0)

我认为你不能像使用$(数据)那样将HTML / XML传递给jQuery。通常情况下,有问题的DOM已经在某个页面的某个页面上,而你做了$(“结果”)。

在您的情况下,您应该在ajax请求本身中将dataType设置为“xml”,然后jQuery将实际解析结果并give them to you in your success() handler

$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "/sites.xml",
        dataType: "xml",
        success: function(xml) {
            $(xml).find('result').each(function(){
                    ...
                });
            });
        }
    });
});