2012-01-10 23 views
25

stupida domanda veloce:jquery load() e aggiungere

ho il mio:

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

ma cosa succede se io non voglio inserire il contenuto caricato in #result, ma anteporre esso a # risultato, mantenendo tutti gli elementi precedenti? È possibile creare una variabile, caricarla con il contenuto e quindi aggiungerla o aggiungerla al mio #result? Immagino alcuni altri scenari in cui con la mia nuova variabile posso manipolarlo prima di inserirlo nel DOM.

risposta

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

È necessario "async: false" in modo da attendere la risposta. Se non lo si aspetta (normale chiamata asincrona di Ajax) si avrà una variabile indefinita per un tempo sconosciuto, quindi potrebbe essere pericoloso.

EDIT: Come dicono giustamente i commenti, l'uso di "async: false" non è normale ed è brutto. Normalmente dovresti manipolare la risposta e inserirla nel DOM all'interno della callback di successo. L'uso del solo async sarebbe necessario se hai davvero bisogno della risposta in una variabile in attesa che un'altra cosa usi quella variabile, non è una cosa comune che accada.

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

bello sapere, forse ajax (get) sarà migliore di get() ? – Daniele

+1

No, $ .get è la forma abbreviata di $ .ajax (ottieni). Ma in $. Non puoi aggiungere più parametri come quello "asincrono". $ .load è una forma abbreviata anche per $ .ajax (get) che carica la risposta in coda nell'elemento. Lo stesso vale per $ .post() che è un abbreviazione di $ .ajax (tipo: "POST") –

+0

Ottimo, andrò ajax()! – Daniele

15

Un modo rapido potrebbe essere:

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

bello! ma cosa succede se var myData = $ .load. ('ajax/test.html')); ? – Daniele

+0

semplice e lavoro – Cleverson

31

Vuoi dire qualcosa di simile?

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

Salva prima il contenuto caricato in una variabile e puoi manipolarlo come desideri.

+0

questo è tutto! grazie! – Daniele

+0

Ottima e facile soluzione, grazie! – Tober

5

fare un post jQuery e caricare i dati ad un vaiable e anteporre al div desiderata

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

alcuni suggeriscono get() o ajax (get) perché post()? – Daniele

+0

@Daniele: entrambi funzioneranno. puoi andare per ottenere get(), che è la forma più semplice di ajax. io uso post se i valori di querystring sono grandi. – Shyju

+0

ho aggiornato la risposta per aiutare a evitare confusione per i futuri lettori. – Shyju

3

credo che questo sia un soluction più breve

$.get("ajax/test.html",function (dados) { $("#result").append(dados);}); 
Problemi correlati