javascript - Wordpress admin-ajax.php 加载失败
问题描述
我正在为我的实践开发一个 wordpress 插件,并在其中通过获取一些信息来注册客户。
is_user_logged_in() 返回 false 然后我想加入脚本
function theme_enqueue_scripts() {
if ( ! is_user_logged_in()){
wp_enqueue_script( 'frontend-ajax', admin_url( 'admin-ajax.php' ));
wp_localize_script( 'frontend-ajax', 'frontend_ajax_object',admin_url( 'admin-ajax.php' ));
}
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_scripts' );
add_action( 'wp_ajax_PHPSidefunction', 'PHPSidefunction' );
add_action( 'wp_ajax_nopriv_PHPSidefunctionNopriv', 'PHPSidefunctionNopriv' );
以及来自下面的 ajax 调用代码的操作
$('#submitbutton').click(function() {
var $inputemail=document.getElementById('inputemail').value;
var $inputname=document.getElementById('inputname').value;
var $inputlastname=document.getElementById('inputlastname').value;
var $inputpassword=document.getElementById('inputpassword').value;
console.log($inputemail+$inputname+$inputlastname+$inputpassword);
console.log("<?php echo get_home_url(); ?>/wp-admin/admin-ajax.php");
$.ajax({
url:frontend_ajax_object,
type: "POST",
dataType: "Text",
data: {
action: "PHPSidefunctionNopriv",
inputemail: $inputemail,
inputname:$inputname,
inputlastname:$inputlastname,
inputpassword:$inputpassword
},
success: function (response) {
console.log(response);
}
error: function(errortype,textStatus,errorThrown){
console.log(errortype);
console.log(textStatus);
console.log(errorThrown);
}
});
});
回调函数在这里
function PHPSidefunctionNopriv(){
//echo 'i am phpside function nopriv';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if($_POST['action'] == 'PHPSidefunction'){
$email= $_POST['inputemail'];
$password=$_POST['inputpassword'];
$userid=wc_create_new_customer($email,$email,$password);
echo $userid;
wp_die();
}
}
}
但我在排队脚本时遇到错误
等待帮助,在此先感谢。
解决方案
您正在尝试将 PHP 脚本加载为 javascript 文件。这是完全错误的。
function theme_enqueue_scripts() {
wp_localize_script( 'frontend-ajax', 'frontend_ajax_object',admin_url( 'admin-ajax.php' ));
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_scripts' );
add_action( 'wp_ajax_PHPSidefunction', 'PHPSidefunction' );
add_action( 'wp_ajax_nopriv_PHPSidefunctionNopriv', 'PHPSidefunctionNopriv' );
用户登录与否,都无所谓。Ajax url 将始终admin_url('admin-ajax.php')
用于 WP_AJAX。
推荐阅读
- r - 如何对 R 中的每个列名进行 FOR LOOP 并将它们转换为单独的数据框?
- mathematical-optimization - 在内点求解器中,我们可以将统一约束设置为 x1+x2+x3+x4=1 我们可以设置像 0.10<=x1+x3>=0.80 和 0.20<=x2+x4>=0.50 这样的约束
- html - 如何在高度为 100% 的 html 和正文中制作粘性导航栏?
- json - 如何从json中读取ordereddict
- android - 微调器第一个元素高度未设置为零
- python - OpenCV dilate() 函数没有关闭所有方向的间隙
- c# - OnPost 未分配新模型值
- c# - PackageReference 或 ProjectReference 到同一解决方案中的组件?
- java - 使用 SwingWorker 发生异常后,即使值正确,线程也不会执行
- docker - 从 docker 容器中获取所有正在运行的容器的 IP 地址