Wenn der Benutzer einen Sortierlink in meinem Blog klickt, möchte ich AJAX verwenden, um neue Beiträge einzuziehen und den Sortierlinkabschnitt zu aktualisieren. Dies wäre mit RJS einfach, aber ich möchte meine JS unauffällig halten und auf AJAX-Anfragen mit nur Daten (und ohne Code) reagieren.Aktualisieren Sie zwei verschiedene Teile der Seite mit unauffälligen JS (in Rails w/jQuery)
Hier ist, was ich tue jetzt:
$('a.order_by').livequery('click', function() {
$.get(this.href, null, function(data) {
// The server returns a blob of HTML with a div#posts
// and a div#sorting
$("#posts").partial_html(data, "#posts");
$("#sorting").partial_html(data, "#sorting");
});
return false;
});
und hier ist die partial_html()
Funktion:
// Stolen from the jQuery source for $.load()
jQuery.fn.partial_html = function(data, selector) {
$(this).html($("<div/>").append(data.replace(/<script(.|\s)*?\/script>/g, "")).find(selector));
}
Offensichtlich ist dies ein bisschen eklig ist - was ist der richtige Weg, dies zu tun? (Es wäre super einfach, zwei $.load()
's zu verwenden, aber das würde eine überflüssige HTTP-Anfrage erfordern).