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