2

在使用 jQuery 的客户端,我想知道是否可以检查链接 URL 是否有效(即不返回 404)。这个链接指向另一个域,所以如果我只使用 $.get() 那么我最终会遇到权限问题。我记得读过一些关于使用 JSONP 请求的内容,但我不记得了。

4

4 回答 4

3

我找到了一个似乎可行的解决方案(使用 YQL):

$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
            "q=select%20*%20from%20html%20where%20url%3D%22"+
            encodeURIComponent(url)+
            "%22&format=xml'&callback=?",
    function(data){
      if(data.results[0]){
        // do whatever
      } 
    }
  );

假设您要检查的 URL 在变量 'url' 中。

于 2010-01-22T19:08:09.573 回答
1

如果您调用的服务器可以返回 JSONP 格式的响应,则 JSONP 可以工作。这基本上意味着一个脚本在加载后在您的页面上调用回调函数。见http://en.wikipedia.org/wiki/JSON#JSONP

在您的情况下,除非其他站点愿意合作或者您自己的站点上有代理脚本,否则它将无法工作。

如果您希望您的脚本与不受您控制的网站一起使用,您最好的选择是使用代理或 iframe hack。

于 2010-01-22T19:04:57.537 回答
0

您不能向另一个域发出这样的请求。这是浏览器中的一项安全功能。您可能必须尝试在 iframe 或其他东西中做某事并检查它。

于 2010-01-22T19:05:52.683 回答
0

jsonp 不会对你有太多帮助......

您应该做的是使用您喜欢的语言在您的服务器上轻松创建一个本地代理,该代理将简单地加载您传递给它的 url 并返回响应代码。然后,使用 jquery ajax 加载带有您要测试的 url 的代理页面。

于 2010-01-22T22:00:39.880 回答