在admin-ajax.php中打开AJAX提交结果

时间:2017-05-25 作者:bodesam

我有一个插件可以通过ajax提交表单。

我将此作为js:

<script type=\'text/javascript\'>
        $(document).ready(function() {
            $(\'#form_id\').submit(function() {
                                e.preventDefault();
                var $form = $(this);
                $.post($form.attr(\'action\'), $form.serialize(), function(data) {
$(\'#feedback_id\').html(data);
                });
                return false;
            });
        });
    </script>
表单的HTML如下所示:

$action=admin_url(\'admin-ajax.php\');

  <form method=\'post\' action=\'$action\'  id=\'form_id\'>
<ul><li><input type=\'text\' name=\'dname\'  placeholder=\'Name\'  />
</li><li><input type=\'email\' name=\'email\' class=\'field-style field-split align-left\'  /></li>
<li>
<input type=\'hidden\' name=\'action\' value=\'php_function\'/>
<input type=\'submit\' value=\'SUBMIT\' />
</li>
</ul>
</form>
<div id=\'feedback_id\'></div>
有一个函数php\\u function()来处理表单输入。其他一切就绪:

add_action(\'wp_ajax_php_function\', \'php_function\');
add_action(\'wp_ajax_nopriv_php_function\', \'php_function\');

The output is supposed to be displayed in the div with id feedback_id but it opens and shows up in the page \'/wp-admin/admin-ajax.php\'

我做错了什么?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您没有在提交函数中传递事件对象,因此e.preventDefault(); 不会阻止表单的提交。

$(\'#form_id\').submit(function(e) { // <--- event object \'e\'
    e.preventDefault();

结束

相关推荐

Yoast类型错误,jQuery冲突?

Yoast 4.7版的更新带来了一个大问题。它不起作用,我不能“回滚”以前的版本。只有到版本2.3.5才能工作。以下是浏览器控制台中的错误:这看起来像是jQuery冲突。在有错误的页面中(wp admin/post.php)加载了jQuery 1.12.4和jQuery 1.11.3建议?