Jquery Form ajaxSubmit not submitting
我正在使用JQuery Form扩展来提交带有AJAX的表单。 我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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; }); |
问题是表单似乎没有提交,或者至少没有调用成功函数。 如果我删除返回false,则提交有效,但页面导航。 我的代码中是否存在可能导致此问题的问题?
干杯,
Gazler。
编辑| 似乎在我的localhost上工作。 这可能与域作为附加域有关吗?
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $(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选项必须是:
1 | iframe: true |
这解决了这个问题。
感谢大家的投入。
表格内部会有一些字段经过验证,可能会隐藏所以请检查所有字段并设置其验证,当我看到有一个隐藏的字段是由于jQuery hide show而隐藏时,它将对我有用。 或者您可以从表单中删除所有验证。