我对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;
}
}
我想要的是任何方法/功能,如果文件存在,给我反馈,在这种情况下状态应该发送给我成功或错误。如果可行,我可以使用它... 我没有看到我的错误
答案 0 :(得分:0)
但这就是你得到答案时所做的一切:警告!
您的回复是否为html格式文本?您想重定向用户还是在页面上显示内容?
基本上,你最常做的是你的回应。替换div的内容,例如
document.getElementById("mydiv").innerHTML = xmlhttp.responseText
或者,您可以更改文档的位置(用于重定向),或者创建指向pdf的链接(我不确定您如何“显示”pdf,使用浏览器插件,作为可下载对象,或者从pdf自动生成html库并提供此而不是pdf文件?)
答案 1 :(得分:0)
由于相同的原始政策,似乎无法通过JavaScript实现这一目标。