WordPress Ajax调用无法在Firefox

时间:2017-02-02 17:04:27

标签: javascript php jquery ajax wordpress

我在WP网站上设置了不同的AJAX调用,一切正常,除了一个特定的AJAX调用,只在Firefox中。

我在下面给出了重现问题的详细信息。它包括登录凭据,但它是一个WP测试网站,这些都是假凭证,所以不用担心,你可以使用它。

转到https://responsive.knowledgeplaces.com

使用凭据登录" aweb01"作为用户标识和密码。

连接后,您将看到不同的按钮。这些是用于测试目的的按钮。

例如,您可以单击按钮"没有lpId参数",您将看到错误消息。

所有这些按钮都会触发服务器上的AJAX调用,如果服务器上的某些验证出错,则会显示警告消息。

所有这些按钮都能正常工作,您将在任何浏览器上看到警报消息,包括Firefox。

还有另一个按钮" deconnexion" (注销)在页面的右上方。

单击此按钮后,您将从站点注销。

此按钮在Chrome和IE上运行正常,但在Firefox上无效。

以下是它的实施方式。

首先,有一个包含以下代码的javascript文件:

$("a[href='/kps_logout']").on('click', function() {
    // check href symbolic URL
    jQuery.post(
    WP_AJAX_URL,
            {
                'action': 'kps_logout',
                'security': $("#kpcms-ajax-nonce").val()
            }
        );
        // redirect and deactivate default navigation
        window.location.href = $kps_Host + $kps_LoginPath;
return false;
});

基本上,我使用符号' / kps_logout' URL和此JQuery代码使用此链接在任何href上映射注销函数。

在服务器上,我将这些代码放在" functions.php"我的WordPress儿童主题:

add_action( 'wp_ajax_kps_logout', 'kps_logout' );
add_action( 'wp_ajax_nopriv_kps_logout', 'kps_logout' );
function kps_logout() {
    // security check
    check_ajax_referer( 'kpcms-ajax-nonce', 'security' );
    // logout user and die
    wp_logout();
    die ();
}

再一次,在Chrome和IE中完美运行,而不是Firefox。

如果我激活网络开发工具,听起来甚至在Firefox中都没有执行AJAX调用,而我可以在Chrome和IE中看到它。

在" no lpId参数"按钮,我可以在所有浏览器中看到AJAX调用,并且它适用于所有浏览器。它的实现方式完全相同。

我已经清除了Firefox的缓存,但它没有帮助。

所以,如果你可以帮助我,那就太棒了!

1 个答案:

答案 0 :(得分:1)

你的Javascript应该是:

$("a[href='/kps_logout']").on('click', function() {
    // check href symbolic URL
    jQuery.post(
    WP_AJAX_URL,
            {
                'action': 'kps_logout',
                'security': $("#kpcms-ajax-nonce").val()
            }, 
        function(response){
        // redirect and deactivate default navigation
        var redirectTo = response;
         window.location.href = redirectTo ;
        });

return false;
});

你的PHP应该像

<?php 

add_action( 'wp_ajax_kps_logout', 'kps_logout' );
add_action( 'wp_ajax_nopriv_kps_logout', 'kps_logout' );
function kps_logout() {
    // security check
    check_ajax_referer( 'kpcms-ajax-nonce', 'security' );
    // logout user and die
    wp_logout();

    echo  get_bloginfo("home");
    die ();
}   

?>