jQuery的形式ajax提交没有提交
问题描述:
我正在使用JQuery表单扩展提交一个表单与AJAX。我有以下代码:jQuery的形式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。
编辑|似乎在我的本地主机上工作。这可能与该域是一个附加域有关吗?
答
这里试试这个:
$(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隐藏秀。或者你可以从表单中删除所有的验证。
当您使用Firebug查看XMLHttpRequest信息时,您看到了什么? – Pointy 2010-03-24 15:13:04
谢谢,我不知道这个功能在萤火虫。我得到了一个403 Forbidden的回应,这很奇怪,因为如果我删除返回false,那么它工作正常。 – Gazler 2010-03-24 15:20:37
有点偏离主题。我认为使用e.preventDefault()会比返回false更好。 – xandy 2010-03-24 15:25:33