0

我对 html、js 等比较陌生。直到现在我在“包含”环境中的网站上工作,我只访问我自己的资源,或者如果我访问其他资源,我总是有一个硬编码的链接。

我的大学使用课程和日期的输入提供在线课程表。pdf 始终以以下格式保存../onxx-yyyy-ww.pdf

我想创建一个网站,该网站曾经要求上课,然后将其保存在 cookie 中,从那时起,每次您访问该网站时,它都会将您转发到当前时间表的 pdf 文件。我发现这可以通过一种叫做 AJAX 的东西来实现,我对此一无所知。这就是我已经走了多远:

js 部分(不包括 Nick Baicoianu 的 getWeek()):

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;
            }
        }

如果文件存在,我想要的只是任何方法/功能给我反馈,在这种情况下,状态应该向我发送成功或错误。如果可行的话,我可以使用它...我看不出我的错误

4

2 回答 2

0

但这就是你得到答案时所做的一切:警觉!
您的回复是 html 格式的文本吗?您想重定向用户或在您的页面上显示内容?
基本上,你最常对你的回应做一些事情。替换 div 的内容,例如

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

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

于 2013-02-28T11:04:28.243 回答
0

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

于 2013-07-10T15:09:44.630 回答