私は html や js などに比較的慣れていません。これまで、「封じ込められた」環境で Web サイトに取り組んでいました。自分のリソースにしかアクセスできませんでした。
私の大学では、クラスと日付の入力を使用して講義スケジュールをオンラインで提供しています。PDFは常に次の形式で保存されます../onxx-yyyy-ww.pdf
一度クラスを要求し、それを Cookie に保存する Web サイトを作成したいと考えています。それ以降は、Web サイトにアクセスするたびに、現在のスケジュールで 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" 要求は同一オリジン ポリシーの対象となります。要求は、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。
また、これは私の新しい forwarding() です:
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;
}
}
私が望むのは、ファイルが存在する場合にフィードバックを提供するメソッド/関数だけです。この場合、ステータスは成功またはエラーを返す必要があります。それがうまくいくなら、私はそれで働くことができました...私は自分の間違いを見ません