为什么JavaScript在PHP函数开始运行之后即使是第一个顺序,也会创建cookie



我对代码中的订单有一个疑问。我想创建一种用语言的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 Dev工具,然后将Swith触发到Tab Network。然后打开页面并查看请求的标题部分(确保其显示全部/html(。然后按F5并从前进行比较。您将看到Cookie标头是在第二个请求中分配的。

希望它回答您的问题。

相关内容

最新更新