Можно ли использовать AJAX для изменения значения [href $ = '. Pdf']? У меня есть страница с несколькими ссылками. Мне нужно вставить «/download.php?file=» в начало каждого связанного PDF, чтобы принудительно загрузить вместо открытия в браузере.jQuery/AJAX для обновления [href]?
Я знаю, что это можно сделать только с помощью JS/jQuery, но мне нужно сделать это в AJAX. Я не много делал с AJAX раньше, и не получаю далеко от Googling ответы. Ниже приведен код, который я придумал, от просмотра в Интернете, но он ничего не делает. Не уверен, что это даже возможно.
$(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 для этого, потому что я уже использую немного AJAX для вставки размера PDF. Когда я использую 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, это должно было быть значением HREF до магии AJAX, поэтому я мог бы добавить его обратно ... – Nathan