我对WP还不熟悉,对AJAX也不太熟悉,但我试图让一个非常简单的Ajax调用开始工作,我想我已经接近了,但是我无法从AJAX调用中得到任何返回结果,我已经把所有的东西都剥了下来,使它正常工作,并且只返回PHP AJAX函数中的字符串‘--这是AJAX数据结果’,但即使这样看起来也不起作用。现在我收到了测试警报…
警报(‘jquery步骤1');-工作正常
警报(‘jquery步骤2');-工作正常
警报(‘ajax结果:'.response);- **未显示**
警报(‘jquery步骤3');-工作正常
我创建了一个自定义插件和定制js和php文件,如下所示..。
*C4L-定制-Funcs.php*
*C4L-定制-scripts.js*
document.addEventListener("DOMContentLoaded", function(event) {
jQuery('#pulldown1').change(function(){
alert('jquery step 1');
var timeformat = 'U';
alert('jquery step 2');
jQuery.ajax({
type: "POST",
url: "admin-ajax.php",
data: { action: 'wps_get_time', format: timeformat },
success: function ( response ) {
alert('ajax result: '.response);
}
});
alert('jquery step 3');
});
});发布于 2018-04-11 08:05:24
有两个问题:
对于第一个问题,相对URL "admin-ajax.php"不起作用。如果您在像/about-us/这样的页面上,那么jQuery将向/about-us/admin-ajax.php发送请求,而D8并不存在。
设置URL的最可靠方法是使用admin_url()函数获得使用PHP的URL,并使用wp_localize_script()将值发送到脚本:
function c4l_custom_script_and_style_includer() {
wp_enqueue_style( 'c4l-css', plugins_url( 'css/c4l-custom-styles.css' , __FILE__ ) );
wp_enqueue_script( 'c4l-js', plugins_url( 'js/c4l-custom-scripts.js' , __FILE__ ) );
wp_localize_script( 'c41-js', 'c41', ['ajaxurl' => admin_url('admin-ajax.php')] );
}
add_action( 'wp_enqueue_scripts', 'c4l_custom_script_and_style_includer' );这一行额外的功能是:如果c4l-js (第一个数组)被排队,创建一个名为c41 (第二个参数)的全局JS变量,其中传递给第三个参数的键和值。我们为admin-ajax.php提供了正确的URL。
所以现在在您的脚本中,将URL设置为:
url: c41.ajaxurl,另一个问题是如何将响应连接到JavaScript中的字符串:
alert('ajax result: '.response);.是PHP中用于连接字符串的字符,但在JavaScript中,您需要使用+:
alert('ajax result: ' + response);https://wordpress.stackexchange.com/questions/300375
复制相似问题