javascript - ajax postリクエストを実行した後にWebページをリロードするにはどうすればよいですか?

okwaves2024-01-25  190

現在、個人 Web サイトに多言語サポートを実装しています (これも完全に ATM で再構築しています)。AJAX 投稿リクエストの後にページをリロードする必要があります。優先言語をセッションに保存しています。変更すると、当然更新されます。正しい翻訳を表示するには、ページをリロードする必要があります。問題は、このメソッドでは、セッションで優先言語を変更する前にページがリロードされる場合があり、その結果、当然のことながら AJAX ポスト リクエストが実行されなくなることです。

JavaScript:

function setLang(lang) {
    $.post("languages/setLang.php", {"preflang":lang});
    location.reload();
}

PHP:

<?php
    session_start();
    $_SESSION['PREFERRED_LANGUAGE'] = $_POST['preflang'];
?>

2

ASYNC 操作が完了するまで待ちます...別名: 成功ハンドラーからのリダイレクトを実行します

– ホンク デア ハセ

2020 年 9 月 3 日 11:55

そうですね、その解決策は私の脳には明白すぎます... もちろん、今は機能します、ありがとう!

– 

user12744064

2020 年 9 月 3 日 11:59

現代的な方法は Promise になると思います...残念ながら、私はフロントエンドのことがあまり得意ではありません ;)

– ホンク デア ハセ

2020 年 9 月 3 日 12:05



------------------------

$.ajax を使用して ajax を送信してみてはいかがでしょうか

JS:

function setLang(lang) {
$.ajax({
          url:"languages/setLang.php",
          type:'POST',
          data:{"preflang":lang},
          dataType:'text',

          success:function(response){
            if(response=='true'){
              location.reload();
            }
          }
        });
}

PHP

    <?php
    session_start();
    $_SESSION['PREFERRED_LANGUAGE'] = $_POST['preflang'];
    echo 'true';
    ?>

この方法では、サーバーからコードを実行した後に ajax 呼び出しが応答を返した場合にのみ成功関数が実行され、ページをリロードできます。

2020 年 9 月 3 日 12:11 に回答

ビラル B

ビラル B

47

6

銅バッジ 6 個

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。