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

时间:2013-02-28 10:37:33

标签: javascript html ajax xmlhttprequest httprequest

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

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

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

js part(由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;
            }
        }

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

由于相同的原始政策,似乎无法通过JavaScript实现这一目标。