关于ajax:Jquery表单ajaxSubmit没有提交

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而隐藏时,它将对我有用。 或者您可以从表单中删除所有验证。