现有这样一个问题,要访问百度的api获取反解析地址,但是访问百度的地址的时候,浏览器有这样一个提示“该页正在访问其控制范围之外的信息,这可能导致安全风险,是否继续?” 放在服务器上的话直接就不行。想问怎么解决这个问题?访问百度的代码:
xmlHttpReq.open("get", "http://api.map.baidu.com/geocoder?output=json&location="+dm.latitude+",%20"+dm.longitude+"&key=6cfb3547153e36c753ed4c3d2b377129", false);
xmlHttpReq.send(); 
var address = ""; 
address = eval("["+xmlHttpReq.responseText+"]")

解决方案 »

  1.   

    Jquery  $.getScript可以跨域。你查查这个方法。挺简单的。
      

  2.   

    $.getJSON("http://api.map.baidu.com/geocoder?output=json&location="+dm.latitude+",%20"+dm.longitude+"&key=6cfb3547153e36c753ed4c3d2b377129", function(data){
    var a = eval("["+data+"]");
      alert(a[0].result);
    });尝试了一下jquery的getJSON方法,百度那边返回的是json数据,但是我得不到数据。前边那个方法加上callback=?也不行
      

  3.   

    Ajax 本身就不支持跨域,最新版本的 XMLHttpRequest 由于支持 CORS 可以跨域,但前提是服务端得响应特定的 HTTP 头。另外,你说的 callback 是 JSONP 的参数,需要服务端支持才行!
      

  4.   


    嗯啊大神,现在我是用的
    xmlHttpReq.open("get", "http://api.map.baidu.com/geocoder?output=json&location="+dm.latitude+",%20"+dm.longitude+"&key=6cfb3547153e36c753ed4c3d2b377129", false);这种方式访问的
    你说的那个http头是什么意思??不太明白
      

  5.   

      把eval("["+data+"]") 换成eval("("+data+")")在测试一把。
      

  6.   


    通过 HTTP GET 请求载入并执行一个 JavaScript 文件。jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。