首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Jquery检查链接是否可用

如何使用Jquery检查链接是否可用
EN

Stack Overflow用户
提问于 2019-01-03 11:10:45
回答 1查看 56关注 0票数 0

在我的Jquery应用程序中,我使用Asp.net数据表来显示数据。我的问题在这里,你可以看到我是用数据表内部的链接来打开文件的。当下载文件夹404中的文件不可用时,显示服务器错误,而不是我需要指向另一个页面。如何检查此datatable.File类型was .html中的文件是否可用

代码语言:javascript
运行
复制
<script>

    $("#cribTable").DataTable({

        "ajax": {

            "url": "/CribManual/GetAllDownloadedCribs",
            "type": "GET",
            "processing": true,
            "datatype": "JSON",
            "serverSide": true
        },
        "columns": [
            {
                "data": "ID", "render": function (data) {

                    return `<button type="button"  data-toggle="confirmation" data-title="Are you sure?" href='@Url.Action("DeleteCrib", "CribManual")/${data
                        }'" class="btn btn-danger">Delete</button>`;
                },

                orderable: false
            },
            { "data": "CUS_NAME" },
            { "data": "CUS_NIC" },
            { "data": "STATUS" },
            { "data": "LOCATION" },
            {
                "data": "LOCATION", 'render': function (data, type, full, meta) {
                   return '<a href="/Downloads/' + data + '">Read File</a>';
                }
            }
        ]

    });

</script>
EN

Stack Overflow用户

发布于 2019-01-03 15:53:27

AJAX不建议使用此解决方案,但您可以在执行AJAX调用时捕获错误代码。参考:Capture 404 status with jQuery AJAX

这可能看起来像这样:

代码语言:javascript
运行
复制
{
  "data": "LOCATION",
  "render": function (data, type, full, meta) {
    var dUrl = "/Downloads/" + data;
    var result = $("<a>").html("Read File");
    $.ajax({
      cache: false,
      url: dUrl,
      success: function(dat, stat, xhr){
        result.attr("href", dUrl);
      },
      error: function (xhr, stat, err){
        if(xhr.status==404) {
          result.attr("href", "#").addClass("no-file");
        }
      }
    });
    return result.prop("outerHTML");
  }
}

DoS WARNING这将为表中呈现的每个文件生成一个HTTP请求。如果是3或4,您的web服务器将能够处理它。但是如果是10,50,100,500,1000等,你将在本质上对你的web服务器执行拒绝服务攻击。大多数web服务器都配置为允许10个并发同时连接到服务器。您可以在配置中进行配置,但最终可能会耗尽资源。

服务器可能无法打开和关闭足够的套接字来处理所有请求,并将开始对它们进行排队。这将导致浏览器必须等待更长时间才能执行脚本,并可能导致超时。根据列表大小的不同,浏览器可能会消耗更多的内存资源,并可能锁定或崩溃。

再一次,我强烈建议让服务器端脚本来做繁重的工作。如果项在服务器上不存在,它不应该返回数据,或者它应该返回一个Datatable可以使用的值,而不必执行许多可能具有威胁的工作。

这来自于经验,而不是理论。

希望这能有所帮助。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54015833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档