是否可以使用AJAX來改變[href $ ='。pdf']的值?我有一個有幾個鏈接的頁面。我需要在每個鏈接的PDF的開頭插入「/download.php?file=」來強制下載,而不是在瀏覽器中打開。jQuery/AJAX更新[href]?
我知道這可以單獨使用JS/jQuery完成,但我需要在AJAX中執行此操作。我之前並沒有在AJAX方面做過很多工作,並且在Google上找不到答案。下面是我想到的代碼,從網上瀏覽,但它沒有做任何事情。不知道它是否可能。
$(function(){
var collID = document.location.pathname.match(/[^\/]+$/)[0];
collID = collID.substring(0, collID.length - 5);
$("a[href$='.pdf']").each(function() {
$.ajax ({
type: 'POST',
dataType: 'json',
success: function() {
$(this).attr("href", "/download.php?file=collections/ms/" + collID + "/" + curA);
}
});
});
});
更新:我被告知,因爲我已經使用了AJAX位的插入PDF的大小使用AJAX這一點。當我使用jQuery來更改href值時,插入的文件大小不再起作用,因爲它不再是文件的直接鏈接。這是代碼。
function hdrDetails(i, elm, cl) {
cl = cl/1024;
//divide content-length by 1024 (KB)
var sz = cl > 1024 ? "MB" : "KB";
//if cl is still big, set to MB
cl = cl > 1024 ? cl/1024 : cl;
//if cl is still big, divide again
var len = $(elm).eq(i).text().length;
//check the link's text length
if (len > 0) {
//add a file size
var $e = $(elm).eq(i);
var t = $e.text();
$e.html(t.slice(0, -1) + "<span class=\"size\"> (" + cl.toFixed(2) + " " + sz + ")</span>" + t.slice(-1));
}
}
$(function() {
var elm = "a[href$='.pdf']," + //only the file types we want
"a[href$='.doc']," + "a[href$='.ppt']," + "a[href$='.xls']," + "a[href$='.docx']," + //don't forget 2007 versions
"a[href$='.pptx']," + "a[href$='.mht']," + "a[href$='.xlsx']";
$(elm).each(function (i, e) {
if (e.hostname && e.hostname == location.hostname) {
$.ajax({
type: "HEAD",
url: $(this).attr("href"),
complete: function (xhr, textStatus) {
var cl = xhr.getResponseHeader("content-length");
if (textStatus == "success") {
var cl = xhr.getResponseHeader("content-length");
hdrDetails(i, elm, cl);
//call the calculation fn
} else {
var $e = $(elm).eq(i);
var t = $e.text();
$e.html(t.slice(0, -1) + "<span class=\"size\"> (File Not Found)</span>" + t.slice(-1));
}
}
});
}
});
});
這沒有任何意義。爲什麼你需要爲此使用AJAX?您的AJAX調用沒有URL,也不使用返回值。你能澄清嗎? – David
和你正在做Ajax請求的網址是什麼? –
嗯,我似乎已經失去了curA,它應該是AJAX魔術之前的HREF值,所以我可以將它添加回來...... – Nathan