使用JavaScript将网站转发到另一个服务器上的pdf文件

Forwarding website to pdf file on another server using JavaScript

本文关键字:服务器 pdf 文件 另一个 JavaScript 网站 转发 使用      更新时间:2023-09-26

我对html, js等相对陌生。到目前为止,我在一个"包含"环境的网站上工作,我只访问我自己的资源,或者如果我访问其他人,我总是有一个硬编码的链接。

我的大学通过输入班级和日期提供在线课程表。pdf文件总是以以下格式保存:/onxx-yyyy- www .pdf

我想创建一个网站,一旦要求类,然后保存在一个cookie,从那时起,每次你访问这个网站,它会把你转发到pdf文件与当前的时间表。我发现这可以通过一种叫做AJAX的东西来实现,而我对此一无所知。这就是我所取得的成就:

js部分(不包括getWeek() by Nick baiicoianu):

window.onload = function(){
            checkCookie();
        }
        function checkCookie(){
            if(document.cookie!=''){
                forwarding();
            }
        }
        function forwarding(){
            alert('Forwarding...');
            if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else{// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function(){
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    alert(xmlhttp.responseText);
                }
              }
            var todayDate = new Date();
            var weekDate = todayDate.getWeek();
            a = document.cookie;
            cookiename = a.substr(0,a.search('='));
            cookiewert = a.substr(a.search('=')+1,a.search(';'));
            if(cookiewert == '')
            {cookiewert = a.substr(a.search('=')+1,a.length);} 
            if(cookiewert<10){
            cookiewert= "0" + cookiewert;
            }
            for (var w=weekDate;w>0;w--){
            xmlhttp.open("GET","http://pollux.dhbw-mosbach.de/cmos_extern_kurs_ext/"+cookiewert+"-"+todayDate.getFullYear()+"-"+w+".pdf",true);
            xmlhttp.send();
            }
        }
        function run(){
            var d = new Date();
            d = new Date(d.getTime() +1000*60*60*24*365*5); // 5 Jahre Cookie
            document.cookie = 'class='+document.getElementById('class').value+'; expires='+d.toGMTString()+';'; 
            forwarding();
        }
html:

<body>
    <select id="class">
        <option value="on09">on09</option>
        <option value="on10">on10</option>
        <option value="on11a">on11a</option>
        <option value="on11b">on11b</option>
        <option value="on12">on12</option>
    </select> 
    <button onclick="run()">Weiter</button>
</body>

显示了我的转发警报,但随后什么也没发生,我毫无头绪。如果你对我的代码有反馈,除了我的问题,我很乐意接受。

我要去吃午饭了,所以我需要一段时间才能回复。谢谢你的帮助!

编辑:

我让jQuery的一切工作,直到它可以检索信息,如果请求的文件存在。什么也不会发生。也许我的代码中有错误,但在控制台它什么也没说。我还发现在jQuery API get()http://api.jquery.com/jQuery.get/

由于浏览器安全限制,大多数"Ajax"请求服从同源策略;请求不能成功地从不同的域、子域或协议检索数据。

这也是我的新转发():

function forwarding(){
            alert('Forwarding...');
            var todayDate = new Date();
            var weekDate = todayDate.getWeek();
            a = document.cookie;
            cookiename = a.substr(0,a.search('='));
            cookiewert = a.substr(a.search('=')+1,a.search(';'));
            if(cookiewert == '')
            {cookiewert = a.substr(a.search('=')+1,a.length);} 
            alert('http://pollux.dhbw-mosbach.de/cmos_extern_kurs_ext/'+cookiewert+'-'+todayDate.getFullYear()+'-'+singleWeek(weekDate)+'.pdf');
            for (var w=weekDate;w>0;w--){
                $.ajax({
                    type: 'HEAD',
                    url: 'http://pollux.dhbw-mosbach.de/cmos_extern_kurs_ext/'+cookiewert+'-'+todayDate.getFullYear()+'-'+singleWeek(weekDate)+'.pdf',
                    crossDomain: true,
                    success: function () {
                        document.location = "http://pollux.dhbw-mosbach.de/cmos_extern_kurs_ext/"+cookiewert+"-"+todayDate.getFullYear()+"-"+singleWeek(weekDate)+".pdf";
                    },
                    error: function () {
                        alert("Unable to connect to secure checkout.");//TODO: remove when success is working
                        return false;
                    }
                });
            }
            function singleWeek(weekDate){
                if (weekDate<10){
                    weekDate = "0"+weekDate;
                }
            return weekDate;
            }
        }

所有我想要的是任何方法/函数给我反馈,如果文件存在,在这种情况下,状态应该发送我成功或错误回来。如果可行的话,我可以这样做……我没看错

但是当你得到答案时,你所做的就是:警报!
你的回复是html格式的文本吗?您想要重定向用户还是在页面上显示内容?
基本上,你应该做些事情来回应。替换div的内容,例如

document.getElementById("mydiv").innerHTML = xmlhttp.responseText

或者,您可以更改文档的位置(用于重定向),或创建一个链接到pdf(我不确定您如何"显示"pdf,使用浏览器插件,作为可下载对象,或库自动生成html从pdf并提供此而不是pdf文件?)

由于同源策略,这似乎是不可能用JavaScript实现的。