2014-12-26 3 views
-1

У меня уже есть некоторые данные в элементах, которые я просто хочу загрузить и добавить что-то еще, Я хочу загрузить и добавить на каждый элемент, который имеет нагрузку данных атрибута. Я делал это, но не работал. Может ли кто-нибудь помочь мне в этом, спасибо.как добавить после загрузки jquery

$(function(){ 
    $("[data-load]").each(function(index){ 
     var $tmp = $('<div>'); 
     var valueData = $(this).data("load") 
     $tmp.load(valueData); 
     $(this).append($tmp.html()); 
    }); 
}) 

ответ

1

load() является сокращенным удобным методом для $.ajax().

AJAX является асинхронным поэтому запрос HTTP не будет завершен в то время, когда вы пытаетесь получить возвращенный HTML внутри $tmp

Вы должны использовать полный дозвон load(), чтобы сделать что-нибудь в возвращаемом результат

Чтобы продолжить работу с нагрузкой() метод Try:

$("[data-load]").each(function (index) { 
    var $tmp = $('<div>'), 
     $el = $(this); 
    var valueData = $(this).data("load") 
    $tmp.load(valueData, function() { 
     /* the ajax has completed here */ 
     $el.append($tmp.html()); 
    }); 

}); 

Другой метод ярлык $.ajax является $.get, который я думаю, что бы сделать этот код более читаемым и немного короче, не нуждаясь для создания временного запоминающего элемента

$("[data-load]").each(function (index) { 
    var $el = $(this); 
    $.get($el.data("load"), function(response){ 
     $el.append(response); 
    });  

}); 

Оба решения предполагают, что data-load атрибута является допустимой URL, который возвращает HTML ожидаемого.

+0

это работает спасибо – LuisDavis

+0

Важнейшей частью ajax является понимание того, что требуется время для получения данных с сервера, а другой код не ждет, чтобы это произошло => асинхронный – charlietfl

Смежные вопросы