2012-01-10 44 views
25

głupie krótkie pytanie:obciążenie jQuery() i dołączyć

Mam:

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

ale co jeśli nie chcę, aby wstawić mój załadowany zawartość do #result, ale poprzedzić go do # wynik, utrzymując wszystkie poprzednie elementy? Czy jest możliwe utworzenie zmiennej, załadowanie jej treścią, a następnie dodanie lub dodanie jej do moich #result? Wyobrażam sobie kilka innych scenariuszy, w których dzięki mojej zupełnie nowej zmiennej mogę manipulować nią przed wstawieniem jej do DOM.

Odpowiedz

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

Trzeba "async: false", tak aby poczekać na odpowiedź. Jeśli nie czekasz na to (normalne wywołanie asynchroniczne Ajax) będziesz miał niezdefiniowaną zmienną na nieznany czas, więc może to być niebezpieczne.

EDYCJA: Jak słusznie podkreślają komentarze, użycie "async: false" nie jest zwyczajne i jest brzydkie. Normalnie zmodyfikujesz odpowiedź i wstawisz ją do DOM wewnątrz oddzwaniania powodzenia. Używanie asynchronicznego byłoby wymagane tylko wtedy, gdy naprawdę potrzebujesz odpowiedzi w zmiennej, czekając na inną rzecz, aby użyć tej zmiennej, a nie zwykłą rzeczą.

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

miło wiedzieć, może ajax (get) będzie lepszy niż get() ? – Daniele

+1

Nie. $ .get jest krótką formą $ .ajax (get). Ale w $ .get nie można dodać więcej parametrów, takich jak "asynchroniczny" jeden. $ .load jest krótką formą również dla $ .ajax (get), która ładuje odpowiedź que w elemencie. To samo dla $ .post(), który jest skrótem dla $ .ajax (type: "POST") –

+0

Świetnie, pójdę ajax()! – Daniele

15

Szybkim sposobem może być:

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

miło! ale co jeśli zmienię myData = $ .load. ("ajax/test.html")); ? – Daniele

+0

prosty i działa – Cleverson

31

Masz na myśli coś takiego?

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

To najpierw zapisuje załadowaną zawartość w zmiennej i można nią manipulować w dowolny sposób.

+0

to wszystko! Dziękuję Ci! – Daniele

+0

Świetne i łatwe rozwiązanie, dzięki! – Tober

5

Czy post jQuery i załadowanie danych do vaiable i dokleja do żądanej div

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

niektóre sugerowane get() lub ajax (get) dlaczego post()? – Daniele

+0

@ Daniele: oba będą działać. możesz przejść do prostej metody get(), która jest najprostszą formą ajax. Używam postu, jeśli wartości zapytania są duże. – Shyju

+0

i zaktualizowałem odpowiedź, aby uniknąć nieporozumień dla przyszłych czytelników. – Shyju

3

myślę, że to jest krótszy soluction

$.get("ajax/test.html",function (dados) { $("#result").append(dados);}); 
Powiązane problemy