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) . "
"); } ?>
如果您设置了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调用完成。