[英]Prototype to jQuery conversion AJAX Syntax
尋找一些關於我的語法對此原型到jQuery轉換是否正確的建議。
我同時加載了兩個框架,並希望將所有腳本轉換為jQuery,以減少頁面加載的重量和速度。
希望在jQuery中復制它:
if (snapshots.items.length < snapshots.total_entries) {
new Ajax.Request(snapshots.url, {
method: 'GET',
parameters: {
page: snapshots.current_page + 1,
per_page: snapshots.per_page
},
onSuccess: function(response) {
var start = snapshots.items.length;
snapshots.items = snapshots.items.concat(eval(response.responseText));
for (i = start; i < snapshots.items.length; i++) {
$('snapshots').appendChild(render_snapshot(snapshots.items[i].snapshot));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides.push($('slide_' + snapshots.items[i].snapshot.id));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides[i]._index = i;
}
snapshots.current_page++;
Photo.Filmstrip.currentSnapshot(currentSnapshot);
}
});
}
if (snapshots.items.length < snapshots.total_entries) {
$j.ajax({
url: snapshots.url,
data: {
page: snapshots.current_page + 1,
per_page: snapshots.per_page
},
success: function (response) {
var start = snapshots.items.length;
snapshots.items = snapshots.items.concat(eval(response.responseText));
for (i = start; i < snapshots.items.length; i++) {
$j('.snapshots').append(render_snapshot(snapshots.items[i].snapshot));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides.push($j('slide_' + snapshots.items[i].snapshot.id));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides[i]._index = i;
}
snapshots.current_page++;
Photo.Filmstrip.currentSnapshot(currentSnapshot);
}
});
}
是的,這看起來不錯-我知道jQuery比Prototype好得多,所以我猜測有一點,但這是有道理的(假設您已經使用$.noConflict
將jQuery
分配給$j
)。 正如@Greg在他的評論中指出的,這里唯一的問題是eval
-我假設您正在返回JSON數據,因此如果您包含config選項:
dataType: 'json'
jQuery將以比普通eval
更安全的方式自動解析此內容。 實際上,我非常確定,在大多數情況下,如果不選擇此選項,jQuery將嗅探您的響應正文,並明智地猜測是否將其解析為JSON,XML,HTML,腳本或文本,在這種情況下,您的eval
將沒必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.