簡體   English   中英

原型到jQuery轉換AJAX語法

[英]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);
                }
            });
        }

到jQuery

   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好得多,所以我猜測有一點,但這是有道理的(假設您已經使用$.noConflictjQuery分配給$j )。 正如@Greg在他的評論中指出的,這里唯一的問題是eval -我假設您正在返回JSON數據,因此如果您包含config選項:

dataType: 'json'

jQuery將以比普通eval更安全的方式自動解析此內容。 實際上,我非常確定,在大多數情況下,如果不選擇此選項,jQuery將嗅探您的響應正文,並明智地猜測是否將其解析為JSON,XML,HTML,腳本或文本,在這種情況下,您的eval將沒必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM