我已經在我的WP站點中設置了不同的AJAX調用,並且除了一個特定的AJAX調用並且只在Firefox中,一切正常。WordPress的Ajax調用不工作在Firefox
我在下面給出了重現問題的細節。它包括登錄憑證,但是它是一個WP測試網站,並且這些都是假憑證,所以不用擔心,您可以使用它。
轉到https://responsive.knowledgeplaces.com
登錄使用憑證 「aweb01」 作爲用戶名和密碼。
連接後,您會看到不同的按鈕。這些是用於測試目的的按鈕。
例如,你可以點擊按鈕「no lpId parameter」,你會看到一條錯誤消息。
所有這些按鈕都會觸發服務器上的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」網址,這個jQuery代碼映射與此鏈接的任何HREF註銷功能。
在服務器上,我在我的WordPress子主題的「的functions.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();
die();
}
再次,完全在Chrome和IE瀏覽器,而不是如果Firefox。
如果我激活網絡開發工具,這聽起來AJAX調用甚至沒有在Firefox中執行,而我可以在Chrome和IE中看到它。
在「no lpId parameter」按鈕上,我可以在所有瀏覽器中看到AJAX調用,並且它在所有瀏覽器上都能正常工作。它的實現方式完全一樣。
我清除了Firefox的緩存,但它沒有幫助。
所以,如果你能幫助我,這將是偉大的!
'window.location的。href = $ kps_Host + $ kps_LoginPath;'應該放在'post'回調中,以保證AJAX調用在頁面導航之前執行。 – imtheman