2013-03-02 52 views
-1

我想创建一个简单的“是一个url活动”验证。

这是我到目前为止有:

function checkUrl(url) { 
    var ok = false; 
    $.ajax(
     { 
      url: 'http://www.google.com', 
      success: function(result) { 
       ok = true; 
      }, 
      error: function(result) { 
       ok = false; 
      }, 
      async: false 
     } 
    ); 
    return ok; 
} 

但它总是返回false。请注意,“www.google.com”网址仅用于测试目的。

+0

即使是同样的问题,我也越来越 – 2013-03-02 12:13:57

+0

这是因为跨域AJAX的限制。 – Barmar 2013-03-02 12:14:31

+0

因为你有一个跨域例外。请参阅:http://en.wikipedia.org/wiki/Same_origin_policy – sdespont 2013-03-02 12:14:32

回答

0

这是因为所谓Same Origin Policy,它是由浏览器中实现的安全策略,防止跨域Ajax调用。

对此的解决方案是使用JSONP,但您要连接的服务器必须支持此策略。

jQuery.ajax支持jsonp。

例:

$.getJSON('<resource-url?callback=?>').done(function(data){ 
    //Your callback logic 
}); 
+0

当JSONP被支持时,它通常只用于API,而不是随机的URL。所以这对于一个通用的“是否存在URL”测试可能不太有用。 – Barmar 2013-03-02 12:46:15

+0

是的,但它不是一个通用的解决方案吗?我需要验证用户放入任何网址的形式。 – Behnil 2013-03-02 12:47:31

+0

是的。在这种情况下,你可能不得不写一个服务器端的一块,它可以使用一个http客户端库来检查url是否存在 – 2013-03-02 12:53:22

0

试试这个: -

function buildQuery() { 
      return "select * from json where url = 'google.com'"; 
     } 

     $.ajax({ 
      url: 'http://query.yahooapis.com/v1/public/yql', 
      data: { 
       q: buildQuery(), 
       format: "json" 
      }, 
      dataType: "jsonp", 
      success: function (result) { 
       alert("Success :" +JSON.stringify(result)); 
      }, 
      error: function (result) { 
       alert("error: " + JSON.stringify(result)); 
      }, 
     } 
    );