Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用onerror检测表中的404个链接_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用onerror检测表中的404个链接

Javascript 使用onerror检测表中的404个链接,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含链接的表,我正试图从包含404个URL的列表中隐藏这些项目。 我在下表列出了两个清单。最上面是steve,它有apple.com的链接,然后是bill,它有无效的src,只是指向windows。因此,在windows上,它应该自动从列表中隐藏 下面是我的代码示例: 小提琴用链环 HTML 您可以通过以下方式使用AJAX和服务器端脚本(如PHP)检查URL是否为404: /*检查\u url.php $url=$_POST['url']; $handle=curl\u init($u

我有一个包含链接的表,我正试图从包含404个URL的列表中隐藏这些项目。
我在下表列出了两个清单。最上面是steve,它有apple.com的链接,然后是bill,它有无效的src,只是指向windows。因此,在windows上,它应该自动从列表中隐藏

下面是我的代码示例:

小提琴用链环

HTML


您可以通过以下方式使用AJAX和服务器端脚本(如PHP)检查URL是否为404:

/*检查\u url.php
$url=$_POST['url'];
$handle=curl\u init($url);
curl_setopt($handle,CURLOPT_RETURNTRANSFER,TRUE);
$response=curl\u exec($handle);
$httpCode=curl\u getinfo($handle,CURLINFO\u HTTP\u CODE);
如果($httpCode==404){
回声‘404’;
退出();
}
卷曲关闭($handle);
回声‘ok’;
退出();
*/
$('tr[src]')。每个(函数(i){
var thisRow=$(此);
var thisrc=thisRow.attr('src');
if(thisrc){
$.ajax({
url:“check_url.php”,
键入:“post”,
数据:{
“url”:thisSrc
},
成功:功能(数据、状态){
如果(数据!=“确定”)thisRow.remove();
}
});
};
});

史蒂夫
苹果
比尔
窗户

因此,如果属性
src
具有无效URL,是否要隐藏表行?如果src具有404 yes
onerror
事件仅由以下因素触发:
。您需要服务器端脚本来检查外部URL是否为404。要么在输出源代码之前检查,要么使用AJAX调用PHP,然后删除行。还有其他方法可以做到这一点吗?我的网站只使用html,不使用php,而用于每个URL。虽然此解决方案在技术上是正确的,但如果您在第三方托管您的网站,并收取出站I/O费用,则可能会产生成本影响,因为您会大大增加服务器可能发出的HTTP请求数。考虑在服务器上周期性地执行这些请求,只需在PHP中生成页面(或者使用任何服务器端代码),这些链接只有不存在的链接。
<table>
  <tbody>
    <tr src="https://www.apple.com/" onerror="Error(this);">
      <td class="listname">Steve</td>
      <td class="listdesc">Apple</td>
    </tr>
    <tr src="windows" onerror="Error(this);">
      <td class="listname">Bill</td>
      <td class="listdesc">Windows</td>
    </tr>
  </tbody>
</table>
function trError(tr) {
    tr.style.display = 'none';
}