2012-01-10 4 views
25

глупый быстрый вопрос:JQuery нагрузки() и добавить

У меня есть:

$('#result').load('ajax/test.html'); 

но что, если я не хочу, чтобы вставить свой загруженный контент в #RESULT, но предварять его # результат, сохраняя все прецедентные элементы? Можно ли создать переменную, загрузить ее с контентом, а затем добавить или добавить ее к моему #result? Я представляю некоторые другие сценарии, где с моей новой переменной я могу манипулировать им, прежде чем вставлять его в DOM.

ответ

19
var response; 
$.ajax({ type: "GET", 
    url: "ajax/test.html", 
    async: false, 
    success : function(text) 
    { 
     response= text; 
    } 
}); 
$('#result').prepend('<div>'+response+'</div>'); 

Вам нужно «асинхр ложь», так что вы ждать ответа. Если вы не дождались его (обычный асинхронный вызов Ajax), у вас будет неопределенная переменная в течение неизвестного времени, так что это может быть опасно.

EDIT: Как справедливо говорят комментарии, использование «async: false» не является обычным и уродливым. Обычно вы будете манипулировать ответом и вставлять его в DOM внутри обратного вызова. Использование async только потребуется, если вам действительно нужен ответ в переменной, ожидающей, что другая вещь будет использовать эту переменную, а не обычную вещь.

$.ajax({ type: "GET", 
    url: "ajax/test.html", 
    success : function(text) 
    { 
     $('#result').prepend('<div>'+text+'</div>'); 
    } 
}); 
+0

приятно знать, может быть, ajax (get) будет лучше, чем get() ? – Daniele

+1

Нет, $ .get - это короткая форма $ .ajax (get). Но в $ .get вы не можете добавить больше параметров, таких как «асинхронный». $ .load - это короткая форма также для $ .ajax (get), которая загружает ответ типа que в элементе. То же самое для $ .post(), что является коротким для $ .ajax (type: "POST") –

+0

Отлично, я пойду ajax()! – Daniele

15

Быстрый способ может быть:

$('#result').append($('<div>').load('ajax/test.html')); 
+1

приятно! но что, если я var myData = $ .load. ('ajax/test.html')); ? – Daniele

+0

простой и работа – Cleverson

31

Вы имеете в виду что-то вроде этого?

var content; 
$.get('ajax/test.html', function(data){ 
    content= data; 
    $('#result').prepend(content); 
}); 

Это сначала сохраняет загруженный контент в переменную, и вы можете манипулировать им, как хотите.

+0

все! Спасибо! – Daniele

+0

Отличное и простое решение, спасибо! – Tober

5

ли пост JQuery и загрузить данные в vaiable и препендом к желаемому DIV

$.post('ajax/test.html', function(data) { 
    $('#result').prepend(data); 
}); 
+0

некоторые предлагаемые get() или ajax (get) why post()? – Daniele

+0

@ Daniele: обе будут работать. вы можете пойти для простого get(), который является самой простой формой ajax. Я использую post, если значения querystring являются большими. – Shyju

+0

Я обновил ответ, чтобы избежать путаницы для будущих читателей. – Shyju

3

Я думаю, что это более короткий soluction

$.get("ajax/test.html",function (dados) { $("#result").append(dados);}); 
Смежные вопросы