2009-10-27 9 views
10

Ich versuche, ein DIV-Element von einer externen Seite in meine aktuelle Seite mithilfe der Ajax/jQuery.ajax -Funktion zu laden. Obwohl es mir gelungen ist, eine ganze externe Seite zu laden, kann ich nicht scheinen nur das DIV-Element zu laden.Verwenden Sie die Funktion Ajax() in Jquery, um PART einer externen Seite in div zu laden

Hier ist mein Code:

$("a").click(function() { 
    /* grabs URL from HREF attribute then adds an */ 
    /* ID from the DIV I want to grab data from */ 
    var myUrl = $(this).attr("href") + "#external-div"; 
    $.ajax({ 
    url: myUrl, 
    success: function(html) { 
    /* loads external content into current div element */ 
    $("#current-div").append(html); 
    } 
    }); 
    return false; 
}); 

Es schnappt sich das HREF-Attribut ohne Probleme, aber nicht "# external-div" an die URL anhängen. Irgendwelche Ideen?

Vielen Dank!

~ Jared Crossley

+0

Die URL, die Sie anfordern, erhält "# external-div", aber welches Backend Sie kontaktieren, versteht nicht, dass Sie nur dieses eine div. Wollen. – wambotron

Antwort

11

Wenn Sie wollten zurückkehren, nur dass div Sie die load Methode von jQuery verwenden könnte, um einfach den Inhalt in Ihr #current-div ala

zurück laden
$("a").click(function() { 
    /* grabs URL from HREF attribute then adds an */ 
    /* ID from the DIV I want to grab data from */ 
    var myUrl = $(this).attr("href") + " #external-div"; 
    $("#current-div").load(myUrl); 
    return false; 
}); 

Werfen Sie einen Blick auf die jQuery Ajax/load documentation

+0

Hallo Quintin, Vielen Dank für Ihre schnelle Antwort. Ich würde es vorziehen, die Lademethode nicht zu verwenden, da sie begrenzt, welche Art von Effektverkettung und Datenmanagement ich durchführen kann, aber momentan ist es die einzige Option, von der ich weiß, dass sie funktioniert. Nochmals vielen Dank für Ihre Antwort. Weiß jemand anders, ob die Funktion Ajax/jQuery.ajax mir erlaubt, ein externes div zu laden? – user196986

+0

Das ist nicht ganz richtig, Sie können immer noch einen Callback für die load-Methode bereitstellen und die Verkettung dort anwenden, das Szenario (über Code), das beschrieben wird, scheint alles zu sein, was die Last nicht kann. Gibt es etwas Besonderes, abgesehen von dem, was du gepostet hast, das du erreichen willst? –

+0

Guter Punkt. Ich denke, meine Frage war nicht vollständig. Die Lade-Methode funktioniert gut, aber es gibt zwei andere Szenarien, in denen ich mich finden kann. Szenario 1) Ich muss möglicherweise XML-Daten (anstelle von HTML) laden und/oder einen POST an ein Formular senden. Szenario 2) Für das obige Beispiel möchte ich den aktuellen Inhalt ausblenden, den neuen Inhalt laden und dann den neuen Inhalt einblenden. Sobald ich jedoch die load() -Methode aufruft, lädt sie sofort den neuen Inhalt, anstatt darauf zu warten, dass der vorherige Inhalt vollständig ausgeblendet wird. Ich entschuldige mich dafür, dass ich nicht klarer bin. – user196986