通过jquery加载名称为变音符号的文件

问题描述

我需要通过jquery加载请求获取文件名中有变音符号的文件的内容。我知道完全不建议在文件名中使用变音符号。

奇怪的是,我在不同的项目上使用了完全相同的代码和相同版本的jquery,并且在这里正常工作。

<a class="nav-link d-inline pl-1 pr-3" href="#" data-path="Ränge">

<script>
$(document).ready(function(){
            $(document).on('click','.nav-link,.internalLink',function(event){
                event.preventDefault();
                console.log('prevented default');
            });


            function loadContent(path,forward) {
                console.log(path);
                path = path.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g,function(letter) {
                        return letter.toUpperCase();
                    });
                console.log("tried to load: " + path);
                $('#content').hide('drop',function(){
                    $('#content').load('content/' + path + '.html',function(response,status,xhr){
                        if(status == 'error'){
                            if(xhr.status == '404'){
                                $('#content').load('content/404.html');
                            }
                            else {
                                $('#content').html('Es ist ein Fehler aufgetreten: ' + xhr.status + ' ' + xhr.statusText);
                            }
                        }
                        if(path == 'Startseite' || forward == false){
                            window.history.replaceState('MyWebsite | ' + path,path,'/' + path);
                        }
                        else {
                            window.history.pushState('MyWebsite | ' + path,'/' + path);
                        }
                        document.title = 'MyWebsite | ' + decodeURI(path);
                        $('#content').show('drop');                    
                    });
                });
            }

            var path = window.location.pathname == '/' ? 'Startseite' : window.location.pathname;
            path = path.replace('/','');
            loadContent(path,true);

            window.onpopstate = function() {
                path = window.location.pathname;
                path = path.replace('/','');
                loadContent(path,false);
            };

            $(document).on('click',function(){
                path = $(this).attr('data-path');
                if(path == 'MusicBot'){
                    window.open('https://MyMusicBotWebsite.de');
                }
                else {
                    if(decodeURI(window.location.pathname.replace('/','')) != path){
                        loadContent(path,true);
                    } 
                }
            });
        }); 
</script>

consol输出显示路径应为“Ränge”,但由于ajax请求尝试加载https://MyWebsite.de/content/R%C3%A4nge.html,并且应加载https://MyWebsite.de/content/Ränge.html

,因此出现404错误

预先感谢

解决方法

这是与Plesk相关的问题...

对不起,我使用了Plesk Web界面的zip上传功能,文件显示为Ränge.html

所以今天我看了两个使用相同加载脚本的网站的http日志。 Plesk表示找不到Ränge.html,因为该文件不存在,但可以在其他网站上找到。我打开Filezilla并通过FTP查看了文件,看到的是:Rдnge.html

因此Pleks在其webinterface / filemanager中显示正确的文件名,但是磁盘上的文件名称不正确。

因此,解决此问题的方法是通过FTP而不是通过Plesk Web界面上传文件。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...