【问题标题】:Forwarding website to pdf file on another server using JavaScript使用 JavaScript 将网站转发到另一台服务器上的 pdf 文件
【发布时间】:2013-02-28 10:37:33
【问题描述】:

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

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

【问题讨论】:

  • 我尝试使用 jQuery,但是一旦我将它作为脚本的 src,即使在此之前它们非常好,大多数事情都会停止工作。例如当 src 中的 jQuery 没有它时,我的 run() 函数会抛出未定义的错误,它可以工作。

标签: javascript html ajax xmlhttprequest httprequest


【解决方案1】:

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

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

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

【讨论】:

  • 它应该将页面重定向到相应的链接,以便可以使用浏览器显示 pdf。这只是为了一些同学和我自己。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2021-11-04
    • 2013-09-08
    相关资源
    最近更新 更多