无法使用仪表板中的提交按钮触发AJAX函数

时间:2015-05-24 作者:Morgan Kay

我正在写一个WordPress插件。我的插件有一些表单,可以将数据发布到WordPress仪表板中我的插件生成的其他页面。我正在尝试创建一个AJAX函数,该函数在提交表单时触发。我的AJAX工作得很好——为了测试它,我在单击插件头时触发了事件,它在那里工作得很好。但是,如果我试图在单击提交按钮(任何输入类型=“提交”)时触发事件,它将不起作用。JavaScript运行正常,但找不到要运行的PHP函数。

以下是我的JavaScript:

$(\'.button\').on(\'click\', function (e) {
    var url = testingajax.ajaxurl;

    var data = {
        \'action\': \'testing_ajax_wtf\',
    }

    $.post(url, data, function (response) {
        console.log(response);
    });
});
PHP函数只返回一个字符串(用于测试目的)。

如果我将第一行更改为:

$(\'.my-plugin-header\').on(\'click\', function (e) {
但如果我试图在单击提交按钮或提交表单时触发它,JavaScript会运行,但找不到PHP函数。

知道这是怎么回事吗?当您在仪表板中提交表单时,WordPress是否会阻止您运行AJAX?

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

只需删除type="submit" 然后让jQuery ajax调用首先被触发。收到回复后,您也可以提交表格。像这样的东西;

function your_action_javascript() { 
?>
<script type="text/javascript" >
    jQuery(document).ready(function($) {

       $(\'.button\').on(\'click\', function () {

            var data = {
                \'action\': \'your_action\'
            };

            // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
            $.post(ajaxurl, data, function(response) {

                // getting response from your ajax callback function
                alert(\'Got this from the server: \' + response);

                // submitting form after getting response
                $(\'#your_form_id\').submit();
            });

        });

    });
</script> 
<?php
}
// Hook this function to admin footer
add_action( \'admin_footer\', \'your_action_javascript\' ); 

结束

相关推荐

通过admin-ajax.php进行的AJAX调用返回404错误

目前,我正在尝试执行一个非常基本的AJAX请求,只是为了测试功能,通过管理AJAX路由我的调用。php。然而,每次我尝试触发AJAX请求时,都会收到一个404错误,上面写着“未捕获的语法错误:意外的标记<;”。Wtf?这似乎是因为我的DTD中的carot。。。我已经检查了我的代码,但不知道我在这里做错了什么。。。我对AJAX的工作还比较陌生,所以如果有任何帮助,我将不胜感激。函数中的php。php什么都不是。。。function shows_callback(){ echo \'<