jQuery拦截表单提交到参数字符串

Posted

技术标签:

【中文标题】jQuery拦截表单提交到参数字符串【英文标题】:jQuery intercept form submission to param string 【发布时间】:2011-06-15 19:22:09 【问题描述】:

我有一个表格。此表单通过 POST 提交到 iframe,而 iframe 依次处理请求,并根据结果执行 javascript,根据提交的有效性更改父级的内容。

现在,我不喜欢这个程序。我希望能够同时提交多个表单,但我只有一个隐藏的 iframe。所以我想用 AJAX 来做,为每个表单提交创建一个单独的请求。

但是,我的表格很复杂;它包含向数组添加变量的复选框、被点击的图像以及我需要发送其点击坐标的复选框,以及类似的复杂内容——这就是为什么我不计算每个输入的值并将其添加到 post 参数的原因字符串(顺便说一句:我不知道如何以这种方式创建数组),我更愿意截取提交内容,保存为带有所有这些参数的帖子字符串,然后将此字符串用于 AJAX POST 请求。

我想在这个函数中做的事情:

$('#myForm').submit(function(event)

    // process the submission, e. g. event.getContent().toPostString();

    // create the AJAX request and send it and attach listeners (I know how to do this line ;)

    return false; // I don't want the form submitted (to the iframe)

);

提前致谢!

【问题讨论】:

【参考方案1】:

不要使用 iframe,只需使用jQuery's ajax methods:(我在下面的示例中使用了post()

$('#myForm').submit(function(event)

             //url          //post data
    $.post(this.action, $(this).serialize(), function(returnData)
           //do something with returnData
    )

    return false; //do not submit form the normal way

);

这是一个例子:http://jsfiddle.net/maniator/Y6r8E/ 在表单中输入内容并提交。

【讨论】:

完美!惊人的!哇,正是我需要的! 除了一件事,我只是注意到了。如果使用图片作为提交按钮,则点击位置(不会那么糟糕),甚至点击的图片(如果使用多张图片作为潜在的提交按钮)都不会通过。 @arik 是表格吗?表格中的任何内容都会通过。只需输出$(this).serialize() 即可检查 嗯,它是形式,或者至少,它应该是。但是,如前所述,它没有通过:((我检查过,它也不在表单的序列化中)。但没关系,我只是觉得值得一提;) @arik -- 好的。您总是可以通过在序列化后附加 +'&param=somevalue&param2=somevalue' 来添加更多参数【参考方案2】:

jQuery 的serialize() 函数将为您收集表单数据,以便通过 .ajax() 或 .post() 轻松提交表单。

【讨论】:

以上是关于jQuery拦截表单提交到参数字符串的主要内容,如果未能解决你的问题,请参考以下文章

layui form 拦截提交事件

如何拦截所有http请求,包括表单提交

jquery submit和ajax提交表单的区别

easyui表单提交问题

jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

easyui表单提交,后台获取不到值