1

我正在做一个magento项目,我试图通过点击更多按钮来加载更多产品。

我可以看到它们正在加载,但之后它只会加载一个空白页面。

我不知道发生了什么或为什么。

这是我的代码

    var loadMore = Class.create({
        initialize: function (list, href, pattern) {
            var that = this;

            this.list = list;
            this.list.insert({ after : '<div class="more"><span id="more_button" class="more-button">More</span></div>'});
            this.href = href.readAttribute('href');
            this.button = $('more_button');
            this.holder = new Element('div', { 'class': 'response-holder' });

            this.button.observe('click', function () {
                if ( !that.button.hasClassName('loading') ) {
                    new Ajax.Request(that.href, {
                        onCreate: function () {
                            that.button.addClassName('loading');
                        },
                        onSuccess: function(response) {
                            if (200 == response.status) {
                                   that.holder.update(response.responseText).select(pattern).each(function(elem) {
                                   that.list.insert({ bottom : elem });

                                }),



  that.href = that.holder.select('.next-page')[0].readAttribute('href');
                                that.button.removeClassName('loading');

                                if ( !that.href ) {
                                    that.button.up().remove();
                                }

                            }

                        }
                    });
                }
            });
        }
    });

如果有人可以帮助我,那就太棒了!

提前致谢。

4

2 回答 2

1

我在我的 magento Iphone 原始主题中遇到了同样的问题,但错误是由于代码注入,主要是来自谷歌分析、clicktale 和类似内容的“脚本”标签。

我所做的修复它是“解析” ajax 响应并使用 html 实体修改打开的“脚本”标签:

在第 117 行下方(iphone.js 中的近似值)

if (200 == response.status) {
that.holder.update(response.responseText).select(pattern).each(function(elem) {

替换为:

str = response.responseText;                                
str  = str.replace(/<script/gi, '&lt;script');

that.holder.update(str).select(pattern).each(function(elem) {
于 2014-08-04T18:38:30.593 回答
0

我可以建议您重写代码并为此使用thiz?您的代码非常难以阅读。

我看不出有任何理由使用 Ajax 请求的 onCreate 事件,顺便说一下,该事件是为 Ajax 响应者保留的(根据规范: http: //prototypejs.org/doc/latest/ajax/Ajax/Request/

相反,您可以在输入 !that.button.hasClassName('loading') ...

if ( !that.button.hasClassName('loading') ) {
    that.button.addClassName('loading');
    new Ajax.Request(that.href, {
....

幕后还有很多事情要做,比如你的 CSS,当然还有 magento,但也包含和父 html 元素,所以很难给出任何合理的建议。你做了什么来调试这个?

卡尔..

于 2013-08-20T04:56:42.687 回答