Jquery表单ajax提交不提交

时间:2010-03-24 15:11:36

标签: jquery ajax jquery-forms-plugin

我正在使用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上工作。这可能与域作为附加域有关吗?

4 个答案:

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