Jquery表单ajaxSubmit未提交

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

我正在使用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; 
}); 
问题是表单似乎没有提交,或者至少没有调用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提交工作,请使用一个按钮,这样您就不会以这种方式与另一个提交交互,解决问题就更容易了。