我是WP的新手,也不太熟悉AJAX,但我正在尝试一个非常简单的AJAX调用,我想我已经接近了,但我无法从AJAX调用返回任何结果,为了让它正常工作,我已经将所有内容剥离到了最底层,我只是从PHP AJAX函数返回字符串“这是AJAX数据结果”,但即使这样也似乎不起作用。现在我收到我的测试警报…
警报(“jquery步骤1”);-工作正常
警报(“jquery步骤2”);-工作正常
警报(\'ajax结果:\'。响应);-**未显示**
警报(“jquery步骤3”);-工作正常
我已经创建了一个自定义插件和自定义js和php文件,如下所示。。。
*********c4l自定义函数。php********
<?php
/**
* Plugin Name: C4L Custom Functions Plugin
* Description: This plugin contains C4l custom functions, scripts and css
styles.
* Author: C4L
* Version: 1.0
*/
function c4l_custom_script_and_style_includer() {
wp_enqueue_script( \'c4l-js\', plugins_url( \'js/c4l-custom-scripts.js\' , __FILE__ ) );
wp_enqueue_style( \'c4l-css\', plugins_url( \'css/c4l-custom-styles.css\' , __FILE__ ) );
}
add_action( \'wp_enqueue_scripts\', \'c4l_custom_script_and_style_includer\' );
add_action( \'wp_ajax_wps_get_time\', \'wps_get_time\' );
add_action( \'wp_ajax_nopriv_wps_get_time\', \'wps_get_time\' );
function wps_get_time() {
// $format = $_POST[\'format\'];
echo(\'This is AJAX data results\');
//echo date($format);
die();
}
?>
*******c4l自定义脚本。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\');
});
});
最合适的回答,由SO网友:Jacob Peattie 整理而成
有两个问题:
您没有将AJAX请求发送到正确的URL您使用的是PHP风格的连接,而不是JavaScript对于第一期,相对URL"admin-ajax.php"
是行不通的。如果你在这样的页面上/about-us/
然后jQuery将请求发送到/about-us/admin-ajax.php
, 这是不存在的。
设置URL最可靠的方法是通过PHP使用admin_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
(第二个参数)将键和值传递给第三个参数。我们已经为admin ajax提供了正确的URL。php。
因此,现在在脚本中,将URL设置为:
url: c41.ajaxurl,
另一个问题是如何将响应连接到JavaScript中的字符串:
alert(\'ajax result: \'.response);
.
是PHP中用于连接字符串的字符,但在JavaScript中需要使用
+
:
alert(\'ajax result: \' + response);