为什么Javascript在php函数开始运行后创建cookie,即使它是第一个有序的

时间:2018-02-09 03:46:42

标签: javascript php cookies

我对代码中的订单有疑问。我想用一种语言创建一个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代码之前加载,但为什么呢?有什么方法可以阻止它吗?

1 个答案:

答案 0 :(得分:0)

当您的意思是进入网站时,您的意思是第一次加载脚本?

您对每个脚本的处理位置感到困惑。你写的Javascript意味着在浏览器上加载和处理,而php将在主机上运行。因此,在浏览器中加载整个内容之前,php将被触发并运行。因此错误。

如果您感到困惑并想知道它是如何发生的,请触发chrome dev工具并切换到标签网络。然后打开页面并查看请求的标题部分(确保显示全部/ html)。然后按f5并比较之前的比较。您将看到在第二个请求中分配了cookie标头。

希望它能回答你的问题。