微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我在具有不同文件夹或目录的 url 中时,语言未更改的错误

如何解决当我在具有不同文件夹或目录的 url 中时,语言未更改的错误

以下参数为我的网站添加语言:

if(isset($_COOKIE['language'])){
    if($_COOKIE['language']==='en'){
        $WEBSITE_TITLE = " | SITE EN";
        $LANG = 'en';
        $language = "en";
    }elseif($_COOKIE['language']==='es'){
        $WEBSITE_TITLE = " | SITE ES";
        $LANG = 'es';
        $language = "es";
    }
} else {
    $WEBSITE_TITLE = " | SITE EN";
    $LANG = 'en';
    $language = "en";
}

通过 Ajax,我可以更改网站的西班牙语或英语语言:

$(function() {
    $(".lang").click(function(e) {
        e.preventDefault();
        var language = $(this).attr('data-lang');
        var postData={lang: language};

        var request = $.ajax({
            method : 'POST',url    : 'language.ini.PHP',data   : postData,dataType: "html"
        });
        request.done(function(data) {
            //$("html").html(data);
            //location.reload();
            //location.href = '/index.PHP';
            setTimeout(function(){
                location.reload();
            },100);
        });
        request.fail(function(jqXHR,textStatus) {
            alert("Error!: " + textStatus);
        });
    });
});

Ajax 发送的数据通过以下参数接收:

if (isset($_POST['lang'])) {
    $lang = $_POST['lang'] ?: '';

    if ($lang === "en") {
        setcookie ('language','en',time()+60*60*24*365,'/','example.com');
    } elseif ($lang === "es") {
        setcookie ('language','es','example.com');
    }
}

但是错误是当我尝试更改包含多个文件夹或目录的 url 中的语言时:

example.com/es/folders2/folders3/folders4/url-of-article/

目前更改语言的代码仅适用于这些页面

example.com
example.com/index.PHP

解决方法

dataType: "html" 更改为 dataType: "json" 并将 console.error(jqXHR); 添加到您的失败函数中,转到控制台查看您得到什么。

您可能在数据类型方面有问题。

我对此进行了测试,对我来说效果很好:

 $(function() {
    $(".lang").click(function(e) {
        e.preventDefault();
        var language = $(this).attr('data-lang');
        var postData={lang: language};

        var request = $.ajax({
            method : 'POST',url    : 'language.ini.php',data   : language,dataType: "JSON"
        });
        request.done(function(data) {
            //$("html").html(data);
            //location.reload();
            //location.href = '/index.php';
            $("#results").html(data); //show data
            setTimeout(function(){
                location.reload();
            },100);
        });
        request.fail(function(jqXHR,textStatus) {
                        console.error(jqXHR);
            alert("Error!: " + textStatus);
        });
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="lang"> click me </div>
<div id="result"> </div> // Conent will show in this div.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。