如何在按钮单击事件上运行AJAX?

时间:2011-07-27 作者:joon

Update: 我设法让AJAX工作,但没有在click事件中。我更新了问题以匹配此。

我正在尝试在页面上找到的一些代码:\'AJAX in Plugins\'.

然而,我不能让它工作,我真的不知道从哪里开始寻找。当我删除click函数并在pageload上运行代码时,它就可以工作了。

我有一个Javascript文件,看起来像这样:

jQuery(document).ready(function(){
    jQuery("#createremotesafe").click(function(){
        alert (\'test\');
        var data = {
            action: \'my_action\',
            whatever: 1234
        };

        // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php

        jQuery.post(ajaxurl, data, function(response) {
            alert(\'Got this from the server: \' + response);
        });
    });    
});
在我的PHP脚本中的某个地方,生成了应该执行Javascript的按钮(即管理页面),以及页面的其余部分:

add_action(\'wp_ajax_my_action\', \'my_action_callback\');
echo \'test2\';
function my_action_callback() {
  global $wpdb; // this is how you get access to the database
  $whatever = $_POST[\'whatever\'];
  $whatever += 10;
  echo $whatever;
  die(); // this is required to return a proper result
}
我得到了Alert (\'test\') 以及echo \'test2\', 但不是响应警报。没有Javascript错误或任何东西。我的代码肯定正在运行,因为我可以看到这两个测试,但为什么AJAX没有得到任何响应?页面加载后,我的php函数会消失吗?也许我不能/不应该使用内置的wp-AJAX函数?

它也不会显示一个空的警报框,只是什么都没有发生。

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

从工作代码库开始。。

add_action(\'in_admin_header\', \'my_ajax_button\');

function my_ajax_button() {
    echo \'<a href="#ajaxthing" class="myajax">Test</a>\';
}

add_action(\'admin_head\', \'my_action_javascript\');

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

    $(\'.myajax\').click(function(){
        var data = {
            action: \'my_action\',
            whatever: 1234
        };

        // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
        $.post(ajaxurl, data, function(response) {
            alert(\'Got this from the server: \' + response);
        });
    });


});
</script>
<?php
}

add_action(\'wp_ajax_my_action\', \'my_action_callback\');

function my_action_callback() {
     global $wpdb; // this is how you get access to the database

     $whatever = $_POST[\'whatever\'];

     $whatever += 10;

             echo $whatever;

     exit(); // this is required to return a proper result & exit is faster than die();
}
这是codex页面中的代码(稍作调整),对我来说很好,所以我建议将其作为起点。。如果这是您最初所做的,它在什么时候中断或停止工作?

NOTE: Mark就是我,当我从另一台电脑(不是我的电脑)访问网站时,我会使用一个辅助帐户。

结束

相关推荐

Creating custom AJAX requests

我的问题是我应该在哪里创建一个ajax函数,我想从我的页面视图中调用它。我在自定义表单上使用jQuery验证器,该表单应该根据我的有效zipcode数据库检查输入的zipcode。我只需要知道这个函数应该存在于哪里。通常,在使用非wordpress站点时,我会使用ajax函数创建一个PHP文件,并通过引用该页面的URL并传递一些参数来调用它们。如何使用wordpress实现这一点?在哪里可以显式调用php文件并传递参数?注意:我想这样调用ajax函数:$.post(\'http://mysite.com/