请求被发送两次到服务器

时间:2011-06-21 09:42:01

标签: jquery html livequery

我正在使用jQuery的实时查询插件来附加动态行为以形成元素并创建ajax表单。我面临的问题如下:

在提交的响应中,如果我不再对元素调用livequery,则新加载的表单不会获得所需的行为。但是,如果我再次使用提交调用livequery,则表单将被提交多次。

实际上,计数每次都在增加。我试过使用expire。但这根本没有帮助。关于如何实现这一点的任何意见。

我要做的是使用类js-ajax-form创建所有表单作为通过ajax提交的表单。结果内容也是一种应该保持相同行为的形式。那就是必须通过ajax提交。

非常感谢您的指导。

$.fn.fajaxform = function() {
        var container = null;
        $(this).livequery(
                'submit',
                function(e) {
                    var $this = $(this);
                    container = $this.parent();
                    $this.ajaxSubmit({
                        beforeSubmit : function(formData, jqForm, options) {
                            $('input:file', jqForm[0]).each(function(i) {
                                if ($('input:file', jqForm[0]).eq(i).val()) {
                                    options['extraData'] = {
                                        'is_iframe_submit' : 1
                                    };
                                }
                            });

                            container.block({
                                message : '<h1><img src="/img/busy.gif" /> Loading please wait...</h1>'

                            });

                        },
                        success : function(responseText, statusText) {

                            redirect = responseText.split('*');
                            if (redirect[0] == 'redirect') {
                                location.href = redirect[1];
                            } else if ($this.metadata().container) {
                                $('.' + $this.metadata().container).html(
                                        responseText);

                            } else {
                                $this.parents('div.js-responses').eq(0).html(
                                        responseText);
                            }


                            $('.js-ajax-form').each(
                                function()
                                {
                                    if (this.expire)
                                    {
                                        this.expire();
                                    }
                                }
                            );
                            $('.js-ajax-form').fajaxform();
                            container.unblock();
                        }
                    });
                    return false;
                });
    };

2 个答案:

答案 0 :(得分:0)

这里只是从臀部拍摄:剧本是否包含了一次?我遇到了多次意外加载相同脚本的问题(使用requireJS),事件发生的时间超过了一次。

答案 1 :(得分:0)

升级到最新版本的jQuery之后问题就解决了。我认为,.live可能是一个更好的选择,因为livequery不再处于积极开发阶段。