Wordpress插件中的AJAX响应0

11 浏览
0 Comments

Wordpress插件中的AJAX响应0

我为WordPress创建了一个插件,并在插件中使用了AJAX,但是AJAX的响应为0。我尝试按照这个答案来解决这个问题,但是无法解决我的问题。

这是我的处理函数:

如果是管理员:

如果是管理员,就添加一个名为"language_redirect_add_config_page"的"admin_menu"的动作。

否则:

- 添加一个名为"preference_language"的"plugins_loaded"的动作

- 添加一个名为"enqueue"的"wp_enqueue_scripts"的动作

- 添加一个名为"preference_language"的"wp_ajax_preference_language"的动作

- 添加一个名为"preference_language"的"wp_ajax_nopriv_preference_language"的动作

添加选项页面的函数为:

添加一个名为"language_redirect_config_page"的选项页面,页面标题为"Language Redirect Setting",菜单标题为"Language Redirect",权限为"manage_options",文件名为当前文件名。

添加脚本的函数为:

添加一个名为"ajax-script"的脚本,脚本路径为"/js/plugin-script.js",依赖于"jquery"。

将"ajax-script"脚本本地化,并将"ajax_url"设为"admin-ajax.php"的URL。

处理函数为:

获取POST的"language"值,如果是"th",就将页面重定向到"th"的URL,否则返回。

结束函数。

这是我的AJAX脚本:

在文档准备就绪时,获取存储在本地的"language"值。

创建一个包含"action"和"language"的数据对象。

使用POST发送数据到"ajax_object.ajax_url",并在响应中打印。

0
0 Comments

Wordpress AJAX在插件响应中出现问题的原因是localStorage.getItem('language')没有正确的值,可能不是或不能是'th'。为了确保代码能够正常工作,可以使用以下代码替代当前的preference_language()函数:

function preference_language() {
    $language = $_POST['language'];
    if($language == 'th') {
        echo "language is th.";
    }
    else {
        echo "language is not th.";
    }
    die;
}

解决方法是对localStorage.getItem('language')进行检查,确保它的值是正确的。

0
0 Comments

Wordpress插件响应0的AJAX问题是因为在输出已经开始之后设置了头部信息。AJAX是从前端调用的,显然输出已经开始了。

解决方法是通过修改代码来避免在输出开始后设置头部信息。可以使用以下代码(未经测试)来实现:

function preference_language() {
    $language = $_POST['language'];
    if($language == 'th') {
        echo site_url('th');
    } else {
        return;
    }
    exit;
}

在JavaScript代码中,可以使用以下方式来调用上述函数:

jQuery(document).ready(function($) {
    var language = localStorage.getItem('language');
    var data = {
        action: 'preference_language',
        language: language
    };
    $.post(
        ajax_object.ajax_url, 
        data, 
        function(response) {
            window.location = response;
        }
    );
});

以上就是解决Wordpress插件响应0的AJAX问题的方法。通过修改代码,避免在输出开始后设置头部信息,可以确保代码正常运行。

0
0 Comments

在WordPress插件中使用AJAX时出现响应0的错误,出现这个错误的原因是在代码中使用了die;语句。解决方法是将die;替换为exit;语句。这是因为响应0错误是WordPress中默认的AJAX错误,大多数情况下使用die;语句会导致一切崩溃。希望这能帮到你。我尝试了将die;替换为exit;,但仍然得到响应0的错误。

0