2012-12-01 4 views
1
<suggestions> 
<user> 
<![CDATA[ Chris ]]> 
</user> 
<user> 
<![CDATA[ Christina ]]> 
</user> 
</suggestions> 

и JS частьJQuery AJAX запрос возвращаемые XML

  $.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> 

ответ

1

Вы должны использовать append вместо html, если вы хотите добавить всех пользователей:

$(data).find('suggestions').each(function(){ 
     $(this).find('user').each(function(){ 
      $('#container').append('<div>' + $(this).text() + '</div>'); 
     }); 
    }); 
+0

'успех:. Функция (данные) { \t \t \t \t \t \t $ ('# cChatMenuContentContainer') пусто(); \t \t \t \t \t \t $ (данные) .find ('пользователь') каждый (функция() { \t \t \t \t \t \t \t $ ('# cChatMenuContentContainer') добавление ('

' + $(this).text() + '
');.. \t \t \t \t \t \t}); \t \t \t \t \t}, 'работает для меня, thx – Chris

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

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>'); 
    } 
}); 
Смежные вопросы