首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新加载AJAX jquery表单页面

重新加载AJAX jquery表单页面
EN

Stack Overflow用户
提问于 2013-11-13 04:10:41
回答 3查看 88关注 0票数 0

当您按下表单页上的按钮时,将重新加载。

代码语言:javascript
复制
$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({
                type: "POST",
                url: "http://api.server.com/share/",
                timeout: 20000,
                data: $(form).serialize(),
                beforeSend: function() {
                },
                success: function(msg){
                },
                error: function(msg){
                }
            });
        }
    });    
});

怎么啦?怎么啦?怎么啦?

EN

回答 3

Stack Overflow用户

发布于 2013-11-13 04:15:37

在函数的末尾添加一个event.preventDefault();。这可以防止默认事件(即表单提交)在函数完成时被触发。

代码语言:javascript
复制
$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({
                type: "POST",
                url: "http://api.server.com/share/",
                timeout: 20000,
                data: $(form).serialize(),
                beforeSend: function() {
                },
                success: function(msg){
                },
                error: function(msg){
                }
            });
        }
    });    

     event.preventDefault();

});
票数 0
EN

Stack Overflow用户

发布于 2013-11-13 04:17:34

验证插件并不是这样工作的。您的代码看起来有点难以推理,因为您正在将验证附加到单击事件。如果您像这样实现它,会发生什么:

代码语言:javascript
复制
(function ($, undefined) {
    'use strict';
    function submitHandler (form) {
       $.ajax({
           type: "POST",
           url: "http://api.server.com/share/",
           timeout: 20000,
           data: $(form).serialize(),
           beforeSend: function() {},
           success: function(msg) {},
           error: function(msg) {}
       });
    }
    $(function () {
        $('.share_file_form').validate({
            submitHandler: submitHandler
        });
    });
}(jQuery));
票数 0
EN

Stack Overflow用户

发布于 2013-11-14 01:37:07

报价操作

“哪里错了?”

你的代码,你的代码,你的代码结构不正确。

代码语言:javascript
复制
$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({...});
        }
    });    
});

报价OP:

“当您按下表单页上的按钮时,将重新加载。”

是的,这是因为当你点击按钮时,验证插件还没有初始化。

.validate() 不是 testing 方法;它是插件的方法。它只被调用一次,通常是在DOM ready上,用来初始化表单上的插件。

您永远不需要将其封装在click事件处理程序中,因为插件已经自动捕获了每个相关的鼠标事件。

也不允许将.validate()附加到<form>对象以外的任何对象。

这是你的代码的工作版本...

代码语言:javascript
复制
$(document).ready(function() {         // <-- DOM Ready event

    $('.share_file_form').validate({   // <-- initialize plugin on form
        submitHandler: function(form) {
            $.ajax({...});
            return false;              // <-- block regular submit when using ajax
        }
    });    

});

演示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19938940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档