使用javascript无法从其他页面获取内容

时间:2014-06-05 07:23:29

标签: javascript jquery validation

我正在尝试为captcha执行客户端验证。为此我需要从外部url获得响应。我使用了下面的javascript代码。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
  function captcha_check()
  {
    var code = document.getElementById("captcha").value;
    alert(code);
    var url = "http://www.opencaptcha.com/validate.php?img='.$captcha_name.'.jpgx&ans="+code;
    alert(url);
    $.get(url,function(data,status){
      alert(data);
      if(data == "fail")
      {
        document.getElementById("captcha_error").style.display = "block";
        return false;
      }
      else
      {
        return true;
      }
    });
  }
</script>

但代码无效。 urlcode正在提醒您。但是javascript停止执行jquery函数以从url获取内容并跳过函数中的其余步骤。

请帮我查一下我的代码有什么问题。

提前谢谢大家。

2 个答案:

答案 0 :(得分:2)

除非响应接受来自所有域的请求,否则无法执行跨域ajax请求。 此外,我不认为验证码的客户端验证可以被称为&#34;安全&#34;。

更多信息: Cross-Origin Resource Sharing (CORS)

答案 1 :(得分:0)

跨域ajax调用存在安全限制。

查看http://en.wikipedia.org/wiki/Same_origin_policy

我在我的位置尝试了您的代码并且chrome返回:

XMLHttpRequest无法加载http://www.opencaptcha.com/validate.php?img=%27。$ captcha_name。%27.jpgx&amp; ans = hi。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://fiddle.jshell.net”访问。

这是您对此类跨域调用的期望。

这就是您的代码失败的原因。