我在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的缓存,但它没有帮助。
所以,如果你可以帮助我,那就太棒了!
答案 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 ();
}
?>