1
<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>
4

3 回答 3

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()));
    });
});​

您可以在 JSFiddle 上实时查看

于 2012-12-01T13:05:23.563 回答
1

如果要添加所有用户,则应使用append而不是:html

    $(data).find('suggestions').each(function(){
        $(this).find('user').each(function(){
            $('#container').append('<div>' + $(this).text() + '</div>');
        });
    });
于 2012-12-01T13:05:59.893 回答
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>');
    }
});
于 2012-12-01T13:14:30.347 回答