首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在用户单击按钮时使用Ajax调用PHP函数

如何在用户单击按钮时使用Ajax调用PHP函数
EN

WordPress Development用户
提问于 2018-09-07 22:12:19
回答 1查看 35.7K关注 0票数 6

我正在开发一个使用自定义模板/主题的wordpress站点,但我遇到了麻烦。我希望在用户单击按钮时使用Ajax调用函数。在一页纸上,我有一个这样的按钮:

代码语言:javascript
复制

我有一个jQuery/Ajax函数,如下所示:

代码语言:javascript
复制
jQuery(document).ready(function() { 
   jQuery(".mark-as-read").click(function () {
    console.log('The function is hooked up');
    jQuery.ajax({
        type: "POST",
        url: "/wp-admin/admin-ajax.php",
        data: {
            action: 'mark_message_as_read',
        },
        success: function (output) {
           console.log(output);
        }
        });
    });
});

上面的函数位于wp-content/themes/my-theme/js/wp_ajax_calls.js中。我将脚本添加到站点中,如下所示:

1)我将它添加到我的functions.php文件中:

代码语言:javascript
复制
wp_enqueue_script(  'ajax calls', get_template_directory_uri() .'/js/wp_ajax_calls.js', array('jquery'), '1.0', true);

2)我在标题中包含了脚本。

代码语言:javascript
复制

当我按原样单击按钮时,将显示console.log语句。据我理解,我希望我的ajax函数调用一个允许我使用$wpdb的php函数。我在functions.php上有这个:

代码语言:javascript
复制
function mark_message_as_read() {
    global $wpdb;
    // do stuff. 
}

这就是我感到困惑的地方。我有两个主要问题:

1)我想我应该有一些add_action() 's,但我不知道放在哪里,我也不知道我应该使用什么钩子。

另外,我希望能够将数据(消息id)传递给我的db查询的php函数。如何将参数传递给该函数?

我不想使用像if( isset($_POST['message_whatever']) ) twentyfifteen_message_whatever();这样的东西,因为我设置消息的方式。

如果需要,很乐意提供更多的信息。提前感谢您的帮助!!

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2018-09-08 06:03:38

  1. 创建一个子主题,这样就不会混淆现有主题的代码,因为下次更新主题时,可能会丢失所有更改(请参阅儿童主题)
  2. 下面是如何将值传递给ajax请求:jQuery(文档).ready( function () {jQuery(“..mark as-read”).click(function(){console.log(‘函数已连接“));jQuery.ajax({ type:"POST",url:“/wp/admin-ajax.php”),data:{ action:'mark_message_as_read',//在这里添加参数( message_id:$(‘. your selector’).val() },成功:函数(输出){console.log(输出);};});

您也可以对非of进行一些研究,以便为应用程序添加一层安全性:https://codex.wordpress.org/WordPress_非

  1. 最后,处理请求的PHP代码(这里也应该在现实代码中处理当前)://为经过身份验证的用户注册ajax操作(‘wp_ ajax _mark_message_as_as_read’,'mark_message_as_read');//为未经身份验证的用户注册ajax操作( add_action('wp_ajax_nopriv_mark_message_as_read','mark_message_as_read');//处理ajax请求函数mark_message_as_read() { $message_id = $_REQUEST;//在这里添加您的逻辑.//最后返回成功的json wp_send_json_success();//或在出错时返回错误json wp_send_json_error();}
票数 10
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/313643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档