jQuery AJAX表单提交无效

我正在尝试通过AJAX提交表单,而不是使用正常的POST提交。 HTML只是一个标准forms, method="post" ,我的jQuery代码如下:

 jQuery.noConflict(); jQuery(document).ready( function($) { var $form = $('#default_contact'); $form.submit( function() { $.ajax({ type: 'POST', url: $form.attr( 'action' ), data: $form.serialize(), success: function( response ) { console.log( response ); } }); return false; }); }); 

(根据这个答案 )

我从提交函数返回false,但表单仍然提交,我无法弄清楚原因。 没有任何Firebug错误。

如果html设置正确,你的代码工作正常。 这是我的测试html(用php),所以你可以比较你自己的。

 " . print_r($_POST, true) . "

"); } ?> ajax submit test

如果您设置了html以便表单可以单独运行,那么它将在没有jquery的情况下充当普通表单。 因此,从html中取出action属性,并将你的jquery更改为:

 url: your-submit-file.php, 

如果这不起作用,请尝试:

 jQuery(document).ready( function($) { var $form = $('#default_contact'); $form.submit( function(event) { $.ajax({ type: 'POST', url: your-submit-file.php, data: $form.serialize(), success: function( response ) { console.log( response ); } }); event.preventDefault; return false; }); 

另外,你试过jQuery的$ .post()吗? 它更容易使用……

我有一个类似的问题 – 我的问题是在表格post中,我使用$(“表单”)。提交在页面提交之前做一些事情。 这个东西包括一个jquery post post。 不幸的是,post动作在表单发布完成之前就不会完成,因此导致问题 – 我的代码看起来像这样:

  $("form").submit(function () { var result = $.post('/Controller/Action', { data: array.toString() } }); 

解决方案是

  event.preventDefault; 

在返回true之前立即停止表单发布,直到ajax调用完成。