Javascript 如何在wordpress中从ajax调用php函数?
我是wordpress新手,我需要从ajax调用php函数,但我的代码不起作用。我在wordpress上读到了关于ajax标准的文章,但我不知道会发生什么,我在本博客中阅读了一些教程和答案,它们都讨论了将javascript文件排队的操作,但问题仍然存在,我不知道我做错了什么。若要继续,请共享我的代码 这是我将javascript文件排队的函数:Javascript 如何在wordpress中从ajax调用php函数?,javascript,php,html,jquery,Javascript,Php,Html,Jquery,我是wordpress新手,我需要从ajax调用php函数,但我的代码不起作用。我在wordpress上读到了关于ajax标准的文章,但我不知道会发生什么,我在本博客中阅读了一些教程和答案,它们都讨论了将javascript文件排队的操作,但问题仍然存在,我不知道我做错了什么。若要继续,请共享我的代码 这是我将javascript文件排队的函数: function enqueue_script() { $ajax_script = 'popup'; $uri = get_styl
function enqueue_script() {
$ajax_script = 'popup';
$uri = get_stylesheet_directory_uri() . '/assets/front/js/popup.js';
wp_register_script($ajax_script, $uri);
wp_localize_script( $ajax_script, 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
wp_enqueue_script( $ajax_script, $uri, array('jquery'), rand(111,9999), 'all');
}
add_action( 'wp_enqueue_scripts', 'enqueue_script' );
我要调用的php函数,位于update_request_status.php文件中:
function update_status(){
echo "<script>alert('I am update function!!!!');</script>";
}
最后,这是我的模式,按钮触发调用php函数的操作:
<div class="warning-msg" id="msg-remove-request">
<button class="btn-close" id="btn-close">×</button>
<h5>¿Dar por concluida esta solicitud ? </h5><hr>
<?php echo fix_request()?>
<div class="confirm-btns">
<button class="btn-confirm">Aceptar</button>
<button class="btn-close">Cancelar</button>
</div>
<div class='update-status'></div>
</div>
&时代;
你的结论是什么
接受器
取消者
有人能帮我吗?有多种方法。首先,我会展示你正在制作的那个 您需要使用and定义两个操作,其中,
{action}
是关键字的占位符,用于标识需要调用的函数。前者仅在用户登录时有效。后者用于未经验证的用户的请求
两个钩子都应该引用您试图调用的同一个函数
下面的示例返回已发送的请求id或带有'Nothing'
的字符串作为响应,以测试结果
add_action( 'wp_ajax_nopriv_update_status', 'update_status' ) ;
add_action( 'wp_ajax_update_status', 'update_status' );
function update_status() {
$request_id = isset( $_POST[ 'request_id' ) ) ?
$_POST[ 'request_id' ) :
'Nothing';
echo $request_id;
}
另一种更现代的方法是使用。这使您能够在哪里获得对反URL和清理的更多控制
您的端点看起来像这样
https://yourwebsite.com/wp-json/api/v1/update
。您可以通过使用获取REST端点的静态URL,就像您使用admin\u URL('admin ajax.php')
一样,并且应该将其添加到队列文件中的wp\u localize\u script
函数中
端点检查允许的方法并调用选项数组中指定的回调。从那里,您可以访问$request
对象,该对象包含请求中给定参数等信息
然后返回一个在前端读取的响应
add_action( 'rest_api_init', 'register_update_endpoint' );
function register_update_endpoint() {
// Register new route to get data from
register_rest_route( 'api/v1', // Mandatory prefix with version
'/update/', // Name of the route, can be anything.
array(
'methods' => array( 'POST' ), // Allowed methods.
'callback' => 'update_status' // Function to call when URL is called.
)
);
function update_status( WP_REST_Request $request ) {
$request_id = $request->has_param( 'request_id' ) ?
$request->get_param( 'request_id' ) :
'Nothing';
$response = new WP_REST_Response( $request_id; );
return $request_id;
}
}
您好,Emiel,谢谢您的帮助,我的php函数之后有这些操作,我的代码是:``函数更新\状态(){echo'警报('I am update function!!!!');“;}添加\操作('wp\ U ajax\更新\状态','更新\状态');添加动作('wp\u ajax\u nopriv\u update\u status,'update\u status');`我的php函数名应该在wp_ajax和wp_ajax_nopriv之后吗?是的,在wp_ajax
和wp_ajax_nopriv
之后的任何内容都是操作的名称。因此,在AJAX请求中,您应该发送action=update\u status
来调用该钩子。例如:wp\u ajax\u nopriv\u foobar
应该通过?action=foobar
从ajax调用。这就是WP知道要在服务器上调用哪个函数的方式。但是,我建议您不要将带有JavaScript的HTML作为响应发送回去,因为您已经收到了一个JavaScript响应,并且可以根据响应决定从那里做什么。好的,我还有一个问题,我如何使用没有表单的操作,我正在从一个模式工作,我有一个项目列表,当用户按下delete按钮时,我需要删除一个项目,然后我想从我的数据库表中删除所选项目,我认为执行此任务不需要表单,我的问题是它没有操作,如果可能,我可以在哪里添加操作而不使用表单,在你的问题中,你已经在上面构建了类似的东西,对吗?只需创建另一个钩子并使用AJAX调用这个钩子。您可以将任何类型的数据发送到钩子。
add_action( 'rest_api_init', 'register_update_endpoint' );
function register_update_endpoint() {
// Register new route to get data from
register_rest_route( 'api/v1', // Mandatory prefix with version
'/update/', // Name of the route, can be anything.
array(
'methods' => array( 'POST' ), // Allowed methods.
'callback' => 'update_status' // Function to call when URL is called.
)
);
function update_status( WP_REST_Request $request ) {
$request_id = $request->has_param( 'request_id' ) ?
$request->get_param( 'request_id' ) :
'Nothing';
$response = new WP_REST_Response( $request_id; );
return $request_id;
}
}