在我的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')在这里不起作用。你可以帮帮我吗?谢谢。
答案 0 :(得分:0)
假设您将ajax调用的返回值分配给数据变量,一切看起来都很好 - 有些事情需要检查:
答案 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(){
...
});
});
}
});
});