Jquery表单ajaxSubmit未提交
我正在使用JQuery表单扩展提交带有AJAX的表单。我有以下代码:Jquery表单ajaxSubmit未提交,jquery,ajax,jquery-forms-plugin,Jquery,Ajax,Jquery Forms Plugin,我正在使用JQuery表单扩展提交带有AJAX的表单。我有以下代码: var options = { beforeSubmit: showRequest, // pre-submit callback success: showResponse, // post-submit callback // other available options: //url: url // override for for
var options = {
beforeSubmit: showRequest, // pre-submit callback
success: showResponse, // post-submit callback
// other available options:
//url: url // override for form's 'action' attribute
//type: 'post', // 'get' or 'post', override for form's 'method' attribute
//dataType: null // 'xml', 'script', or 'json' (expected server response type)
clearForm: true, // clear all form fields after successful submit
//resetForm: true // reset the form after successful submit
// $.ajax options can be used here too, for example:
timeout: 3000
};
$('#composeForm').submit(function() {
// inside event callbacks 'this' is the DOM element so we first
// wrap it in a jQuery object and then invoke ajaxSubmit
$(this).find(':disabled').removeAttr('disabled');
$(this).ajaxSubmit(options);
// !!! Important !!!
// always return false to prevent standard browser submit and page navigation
return false;
});
问题是表单似乎没有提交,或者至少没有调用success函数。如果我删除了return false,那么提交工作正常,但是页面会自动离开。我的代码中是否存在可能导致此问题的问题
干杯,
加兹勒
编辑|似乎正在我的本地主机上工作。这可能与该域是一个附加域有关吗?我的猜测是,当您删除false时,您的定期提交正在发生——在这两种情况下,它根本不起作用 我认为您需要为更多选项提供正确的值。有很多东西被评论出来了。此外,如果您只需使用一个按钮而不是表单提交,则可能会更好,这样您就不必担心试图关闭浏览器的自动魔法功能。在这里尝试以下方法:
$(document).ready(function(){
$("#composeForm").submit(function(){
var str = $(this).serialize();
var formAction = $(this).attr("action");
$(this).find(':disabled').attr('disabled','');
$.ajax({
type: "POST",
url: formAction,
data: str,
beforeSubmit: showRequest,
success: showResponse
});
return false;
});
});
添加自己的解决方案
iframe选项需要是:
iframe: true
解决了问题
感谢大家的输入。表单中会有一些字段经过验证,可能会被隐藏,因此请检查所有字段并设置其验证。当我看到由于jQuery hide show而隐藏的隐藏字段时,它会对我起作用。或者,您也可以从表单中删除所有有效性验证 当您使用Firebug查看XMLHttpRequest信息时,您看到了什么?谢谢,我不知道Firebug中的这个特性。我得到了一个403禁止响应,这很奇怪,如果我删除了return false,那么它就可以正常工作了。有点离题了。我认为使用e.preventDefault()比返回false更好。我使用的是文档推荐的返回false。顺便说一句,我对文件的权限是755。为了完整起见,我的服务器响应是“301永久移动”-URL不正确(我还使用了CodeIgniter,它必须在URL中使用index.php,即使在.htaccess中使用mod_rewrite)。一旦我在我的选项中指定了完整的URL,301错误就消失了,我所有的POST变量都被正确提交了。这可以工作,但对图像来说不行。因为它们不能通过XMLHTTPRequest本地传递,我相信。没错——如果您想让jQueryAjax提交工作,请使用一个按钮,这样您就不会以这种方式与另一个提交交互,解决问题就更容易了。