2013-06-02 15 views
7

Per favore qualcuno può dirmi come estrarre il contenuto da un div su un'altra pagina usando il metodo JQuery ajax()?Come caricare un frammento HTML con JQuery ajax()?

anotherpage.html

<html> 
<head></head> 
<body> 
<div id="content">I want to extract this element</div> 
</body> 
</html> 

ho provato:

$.ajax({ 
url: "anotherpage.html #content", 
dataType: "html" 
}).done(function(data){ 
$("#results").html(data); 
}) 

ma restituisce la pagina completa e non solo il frammento #content.

NOTA: So come farlo funzionare con la stenografia load() ma mi piacerebbe sapere come farlo con il metodo ajax().

Grazie in anticipo.

+1

Eventuali duplicati http://stackoverflow.com/questions/2398568/loading-page-framents-with-jquery-ajax –

risposta

2

prova con questo

$('#results').load("anotherpage.html #content"); 

visitare anche "Loading Pagina Frammenti" qui jquery load api.

+0

Grazie per la tua risposta, ma ho detto che volevo sapere come farlo con il metodo ajax() completo e non con la stenografia load(). – user1791841

0

Un'altra stenografia è $.get function e l'esempio pertinente a ciò che si sta chiedendo è here. Questa documentazione fornisce anche la forma espansa del metodo invece della stenografia.

var jqxhr = $.get("example.html", function() { 
    alert("success"); 
}) 
.done(function() { /* Do work.. */ }) 
.fail(function() { /* Do error.. */}) 

// which can be simplified to 


$.ajax({ 
    url: "example.html", 
    data: { /*data*/ }, 
    success: function(oData) { /* Do work.. */ }, 
    dataType: 'html' 
}); 

Inoltre, il contenuto di caricamento di una pagina (o pagina Frammenti) da id può essere realizzato

$("#TargetContainer").load("example.html #Content"); 

Per fare questo in modo che il codice HTML non è posizionato nella pagina:

$('<div>').load("example.html #Content"); 

per quanto riguarda utilizzando AJAX(), questo sembra inutile se non in micro ottimizzazione, ma guarderà dentro e torna in

UPDATE

Il metodo ajax non carica i frammenti di pagina. Che cosa dovrà accadere è che nella funzione completa si dovrà:

function(oData) 
{ 
    var oContent = $(oData).find('#selector"); 
} 
+0

Questo non è quello che viene chiesto qui. Non sta caricando un frammento ma l'intero documento. – Clawfire

+0

Modificare la parte url per includere un tag hash con l'id del contenitore. Aggiornerò per riflettere –

+0

Ci sono alcuni buoni motivi per usare 'ajax' piuttosto che' load': ad es. 'ajax.fail()' se qualcosa va storto è meno complicato di dover esaminare i parametri 'status' e' xhr' della funzione 'complete'. A proposito la tua funzione finale dovrebbe includere sthg come '$ ('#existingDiv') .after (oContent)'. –