<suggestions>
<user>
<![CDATA[ Chris ]]>
</user>
<user>
<![CDATA[ Christina ]]>
</user>
</suggestions>
和js部分
$.ajax({
type: "POST",
url: 'index.php/Suggest/',
dataType: 'xml',
data: {username: username},
success: function(data) {
$(data).find('suggestions').each(function(){
if ($(this).find('user').text()) {
$('#container').html('<div>' + $(this).find('user').text() + '</div>');
}
});
},
error: function(request, status, error) {
// will also occur when the user toggles a window and instantly clicks on a link, so don't alert anything
}
});
插入
<div>ChrisChristina</div>
但我想要
<div>Chris</div> <div>Christina</div>
答案 0 :(得分:1)
我认为它会遍历suggestions
。相反,它应该迭代user
。这是工作代码:
var response = ""+
"<suggestions>" +
"<user>" +
"<![CDATA[ Chris ]]>" +
"</user>" +
"<user>" +
"<![CDATA[ Christina ]]>" +
"</user>" +
"</suggestions>";
// This is using the JSFiddle "echo" interface
$.post("/echo/xml/", {"xml": response}, function(data) {
$(data).find('user').each(function(i, user){
$("#container").append($("<div>").text($(user).text()));
});
});
您可以查看live on JSFiddle
答案 1 :(得分:1)
如果您想添加所有用户,则应使用append
代替html
:
$(data).find('suggestions').each(function(){
$(this).find('user').each(function(){
$('#container').append('<div>' + $(this).text() + '</div>');
});
});
答案 2 :(得分:0)
您需要遍历每个user
元素。在多个元素上使用text()
方法时,会返回所有文本,但方法无法识别添加空格。
$(data).find('suggestions').each(function() {
var $user=$(this).find('user');
/* use length to check if user elements exist*/
if($user.length){
var user=$user.map(function(){
return $(this).text();
}).get().join(' ')
$('#container').append('<div>' + user + '</div>');
}
});