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。

编辑|似乎在我的本地主机上工作。这可能与该域是一个附加域有关吗?

+0

当您使用Firebug查看XMLHttpRequest信息时,您看到了什么? – Pointy 2010-03-24 15:13:04

+0

谢谢,我不知道这个功能在萤火虫。我得到了一个403 Forbidden的回应,这很奇怪,因为如果我删除返回false,那么它工作正常。 – Gazler 2010-03-24 15:20:37

+0

有点偏离主题。我认为使用e.preventDefault()会比返回false更好。 – xandy 2010-03-24 15:25:33

我的猜测是,当您删除错误时,您的正常提交正在发生 - 在两种情况下都不起作用。

我认为你需要有更多选项的正确值。有很多东西在那里注释。另外,如果你只是使用一个按钮来完成提交而不是表单提交,那么你可能会更好,那么你不必担心试图关闭浏览器的自动魔法内容。

+0

提交作品如果是正常提交​​。 – Gazler 2010-03-24 15:31:08

+0

准确地说 - 如果你想让jQuery ajax提交工作使用一个按钮,所以你不用与其他提交方式进行交互,这样可以更容易地解决问题。 – Hogan 2010-03-25 03:03:11

这里试试这个:

$(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; 

    }); 

}); 
+2

这将工作,但不与图像。由于他们不能通过XMLHTTPRequest本地传递,我相信。 – Gazler 2010-03-24 16:16:53

+0

@Gazler这是你第一次提到图片.. – ant 2010-03-24 16:18:53

添加自己的解决方案,

是需要iframe的选项:

iframe: true 

这解决了这个问题。

感谢大家的意见。

表单内部会有一些被验证的字段,它可能是隐藏的,所以请检查所有字段并设置其验证,它将为我工作,当我看到隐藏字段被隐藏时,由于jQuery隐藏秀。或者你可以从表单中删除所有的验证。