此代码检查死链接。由于浏览器不允许第 3 方 Ajax 请求,因此我创建了一个 php 文件来检查死链接,我的 native jQuery 代码是:
function UrlExists(urlx) {
$.ajax({
url: "/chk.php?url=" + encodeURIComponent(urlx),
cache: false,
method: 'get',
success: function (data) {
if (data.indexOf("T") != -1) {
return true;
}
else {
return false;
}
}
});
}
$(document).ready(function () {
$("table[id^='row']").each(function () {
if (!UrlExists($(this).find("a[href$='mp3']").attr('href'))) {
$(this).remove();
}
})
});
同时,我已经确定
1) chk.php
工作正常,在某些 URL 上返回 T
,而在其他 URL 上则返回 T
。
2) 旧的 JS 代码没有被使用
问题仍然是上面的程序删除了所有链接。我还尝试将 async
设置为 false,但没有帮助。
最佳答案
成功回调由 jQuery 调用,并消耗返回值。代码中的 UrlExists 始终返回未定义的值,该值被视为 false。尝试如下所示:
function urlExists(url, callback)
{
$.ajax({
url: "/chk.php?url="+encodeURIComponent(url),
cache: false,
method: 'get',
success: function(data){
if (data.indexOf("T") != -1){
callback(true);
} else {
callback(false);
}
}
});
}
$(document).ready(function() {
$("table[id^='row']").each(function() {
var url = $(this).find("a[href$='mp3']").attr('href');
var self = this;
urlExists(url, function (exists) {
if (! exists) {
$(self).remove();
}
});
});
});
或者您可以使用其他答案中描述的同步方法编写 urlExists,但是它会使 javascript 引擎在每次获取期间阻塞,而且由于多个请求不能同时发生,因此速度较慢。
关于jquery - 为什么 jQuery 死链接删除代码会删除所有链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188278/