2010-06-24 13 views
5

La mia risposta ajax (jquery) (html) mi fornisce un'intera porzione di codice sorgente html poiché recupera la pagina di enrite.Lettura di una parte della risposta html ajax

La risposta è un po 'come di seguito:

 

<html> 
<head> 
... 
... 
</head> 
<body> 
. 
..... 
. 

....... 

<div id="content"> 
    content i want to extract 
</div> 
............. 
.......... 
............. 

</body> 
</html> 

Ho bisogno di aiuto con il seguente:

1) E' possibile leggere solo ciò che si trova tra la <div id='content'></div>? se sì, come?

2) se # 1 non è possibile, come è possibile estrarre solo il contenuto dallo <div id='content'></div>?

Il codice ho provato:

 

    /*Ajax*/ 
    $jq(function(){ 
    alert ("Doc ready"); 
     $jq("#content a.next-page").bind("click", function(e){ 
      alert ("Hey!"); 
      /*Make the call*/ 
      $jq.ajax({ 
       url: "/page/2", 
       type: "get", 
       cache: false, 
       data: "", 
       error: function(){alert ("No data found for your search.");}, 
       success: function(results){ 
        //$searchPanel.find("tbody").empty().append(results); 
        //$searchPanelHolder.css({"display":"block"}); 
        alert (results.find("div[id='content']").html()); 
        e.preventDefault(); 
       } 
      }); 
      e.preventDefault(); 
     }); 
    }); 

Qualsiasi aiuto su questo è molto apprezzato

Molte grazie, Racky

+1

Justa commento generale; dal momento che stai recuperando una pagina html direttamente senza passare da un "bridge" di back-end, presumo che la pagina sia sul tuo dominio, la stessa da cui proviene lo script. In questo caso, dovresti dedicare del tempo a sviluppare uno script PHP (o qualsiasi altra cosa) che tocchi direttamente nel tuo database e restituisca i dati che ti interessano in formato JSON o XML. In questo modo il tuo frammento JS funzionerà anche se cambi il markup di quella pagina. –

+0

Dovresti controllare la risposta di qualcuno come quella giusta. – Mark

risposta

0

Sì, è possibile, ma è necessario per prima cosa creare un oggetto jQuery.

Modifica questa linea:

alert (results.find("div[id='content']").html()); 

a questo:

alert ($(results).find("div[id='content']").html()); 

o, meglio ancora, a questo:

alert ($(results).find("#content").html()); 

EDIT:

Sembra che se l'elemento desiderato sia un figlio diretto di body, sarà necessario utilizzare .filter() poiché lo body sembra essere escluso dall'oggetto jQuery. Sembra che solo il suo contenuto sia incluso.

alert ($(results).filter("#content").html()); 
+0

Grazie mille :) Anche questo ha funzionato! – racky

+0

@racky - Prego. : o) FYI, usando '.find()' è un * tiny * bit più veloce di '$ (" # content ", results)' poiché jQuery lo converte in '.find()' comunque. Non sarà una differenza evidente, però. – user113716

+0

hey grazie ancora, un altro piccolo problema, ora ottengo i dati richiesti con il vostro gentile aiuto. quello che sto facendo ora è svuotare il vecchio contenuto dal div [$ ("# contenuto").empty()] e aggiunge i dati appena recuperati [.append (newdata)]. Ma questo stranamente ricarica la pagina in una pagina bianca! qualche pensiero intorno a questo? – racky

1

Che dire di questo?

$("#content", results).html() 
+0

Grazie mille :) Ha funzionato! – racky

Problemi correlati