确定链接在用户单击时是否有效

时间:2011-02-24 05:21:15

标签: javascript jquery asp.net

我提供了一个小部件,用户可以在其中存储他们创建的链接。

所以换句话说他们:

  1. 点击添加链接
  2. 模式弹出并输入信息:链接标题,链接URL,订单
  3. 通过AJAX将其保存到数据库,然后刷新小部件以显示他们创建的所有用户链接。
  4. 我想做的是当用户点击他们的链接时,确定链接是否存在(可能不在此域上,因此我可以看到具有AJAX的可预见问题)如果确实如此,则继续正常打开新窗口并以快乐的方式发送给他们。

    但是,如果不是,我想生成一个类似于。的<< Growl Like'消息。

      

    对不起链接不存在,   请验证您的链接。

    我基本上需要在客户端验证链接存在的方法。这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用jquery在所有链接上附加click()事件处理程序,然后尝试在隐藏的iframe中加载URL,如果成功则在新窗口中打开链接。请注意,这是一种非常昂贵的链接检查方式。也许可以像HTTP头请求那样更聪明地完成。

修改

在这里找到解决方案(仅限普通javascript):HTTP HEAD Request in Javascript/Ajax?

function UrlExists(url)
{
  var http = new XMLHttpRequest();
  http.open('HEAD', url, false);
  http.send();
  return http.status!=404;
}

这里有一个jQuery解决方案:Ajax HEAD request via Javascript/jQuery

ajaxSizeRequest = $.ajax({
    type: "HEAD",
    async: true,
    url: url,
    success: function(message){
    }

正如@Matt King指出的那些实际上是相当无用的跨域 - 在这种情况下,我会在你的应用程序中设置一个proxy.aspx页面,而不是你查询。然后,此代理必须在C#中执行HTTP HEAD请求,并将结果(成功/失败)返回给client / jQuery。