2017-02-02 10 views
0

WPサイトで異なるAJAX呼び出しを設定しましたが、特定のAJAX呼び出しとFirefoxのみを除いてすべて正常に動作します。WordPress AjaxコールがFirefoxで動作しない

私はこの問題を再現するための詳細を以下に示します。それはログイン資格情報を含んでいますが、それはWPテストサイトであり、これらは偽の資格情報ですので、心配する必要はありません。ユーザーIDやパスワードなどの認証情報 "aweb01" とhttps://responsive.knowledgeplaces.com

ログインへ

移動します。

接続すると、異なるボタンが表示されます。これらはテスト目的のボタンです。

たとえば、「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」URLを使用しており、この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の場合は完璧に動作します。

ネットワーク開発ツールを有効にすると、FirefoxとAJAXの呼び出しがFirefoxで実行されていないように聞こえますが、ChromeとIEではそれを見ることができます。

「no lpIdパラメータ」ボタンでは、すべてのブラウザでAJAX呼び出しが表示され、すべてのブラウザで正常に動作します。そして、まったく同じように実装されています。

私はFirefoxのキャッシュをクリアしましたが、それは役に立ちません。

これで私を助けることができれば、それは素晴らしいことでしょう!

+0

'window.locationのようなもの。ページのナビゲーションが行われる前にAJAX呼び出しが実行されるようにするには、 'post'コールバックにhref = $ kps_Host + $ kps_LoginPath;を入れる必要があります。 – imtheman

答えて

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(); 
} 

?> 
+0

お互いに感謝します。 私はうまく動作するイム面接で行く。 本当に、リダイレクトはAJAX呼び出しの後に実行する必要がありました。 –

関連する問題