首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress AJAX调用不返回结果

WordPress AJAX调用不返回结果
EN

WordPress Development用户
提问于 2018-04-10 16:33:49
回答 1查看 2K关注 0票数 2

我对WP还不熟悉,对AJAX也不太熟悉,但我试图让一个非常简单的Ajax调用开始工作,我想我已经接近了,但是我无法从AJAX调用中得到任何返回结果,我已经把所有的东西都剥了下来,使它正常工作,并且只返回PHP AJAX函数中的字符串‘--这是AJAX数据结果’,但即使这样看起来也不起作用。现在我收到了测试警报…

警报(‘jquery步骤1');-工作正常

警报(‘jquery步骤2');-工作正常

警报(‘ajax结果:'.response);- **未显示**

警报(‘jquery步骤3');-工作正常

我创建了一个自定义插件和定制js和php文件,如下所示..。

*C4L-定制-Funcs.php*

代码语言:javascript
复制

*C4L-定制-scripts.js*

代码语言:javascript
复制
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');
    }); 
});
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2018-04-11 08:05:24

有两个问题:

  1. 您没有将AJAX请求发送到正确的URL。
  2. 您使用的是PHP风格的级联,而不是JavaScript。

对于第一个问题,相对URL "admin-ajax.php"不起作用。如果您在像/about-us/这样的页面上,那么jQuery将向/about-us/admin-ajax.php发送请求,而D8并不存在。

设置URL的最可靠方法是使用admin_url()函数获得使用PHP的URL,并使用wp_localize_script()将值发送到脚本:

代码语言:javascript
复制
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设置为:

代码语言:javascript
复制
url: c41.ajaxurl,

另一个问题是如何将响应连接到JavaScript中的字符串:

代码语言:javascript
复制
alert('ajax result: '.response);

.是PHP中用于连接字符串的字符,但在JavaScript中,您需要使用+

代码语言:javascript
复制
alert('ajax result: ' + response);
票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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