我正在使用JQuery Form扩展来提交带有AJAX的表单。我有以下代码:
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。
EDIT |似乎在我的localhost上工作。这可能与域作为附加域有关吗?
答案 0 :(得分:3)
这里试试这个:
$(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;
});
});
答案 1 :(得分:2)
我的猜测是,当您删除错误时,您的常规提交正在发生 - 在两种情况下都不起作用。
我认为您需要为更多选项提供正确的值。那里有很多东西被评论出来。此外,如果您只使用按钮进行提交而不是表单提交可能会更好,那么您不必担心尝试关闭浏览器所做的自动魔术。
答案 2 :(得分:1)
添加自己的解决方案,
iframe选项必须是:
iframe: true
这解决了这个问题。
感谢大家的投入。
答案 3 :(得分:0)
表单内部会有一些字段经过验证,可能会隐藏所以请检查所有字段并设置其验证,当我看到有一个隐藏的字段是由于jQuery隐藏隐藏时,它将对我有用节目。或者您可以从表单中删除所有验证。