簡體   English   中英

為什么在php函數開始運行后Javascript會創建cookie,即使第一個按順序運行

[英]Why does Javascript creates cookie after php function starts to run even if the one is first in order

我對代碼中的訂單有疑問。 我想用一種語言創建一個cookie,然后使用函數l進行翻譯。 這是代碼:

<script>
var lang = navigator.language;
if (document.cookie.indexOf("LANG=")==-1) {
    if (lang=="pl"||lang=="en-US") {
        document.cookie = "LANG="+lang+";domain=xxx;path=/";
    } else {
        document.cookie = "LANG=en-US;domain=xxx;path=/";
    }
}
</script>
<?php

include 'translations.php';


function l($t) {
    global $trsl;
    $l = $_COOKIE['LANG'];
    if ($l=="en-US") {
        return $t;
    } else {
        return $trsl[$l][$t];
    }
}
?>

我進入網站時發現的問題是,當您第一次進入該網站時,它向我顯示一條錯誤,指出未定義所請求的cookie。 但是,當我按Ctrl + F5時,一切恢復正常。 我猜PHP代碼先於JS代碼加載,但是為什么呢? 有什么方法可以預防嗎?

當您進入網站時,是指第一次加載腳本?

您對每個腳本的處理位置感到困惑。 您編寫的Javascript是在瀏覽器中加載和處理的,而php將在主機上運行。 因此,在整個瀏覽器加載完畢之前,您的php將被觸發並運行。 因此錯誤。

如果您感到困惑並想知道它是如何發生的,請觸發chrome開發工具並切換到標簽網絡。 然后打開頁面,查看請求的標頭部分(確保其顯示全部/ html)。 然后按f5進行比較。 您將看到在第二個請求上分配了cookie標頭。

希望它能回答您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM