无法通过ajax从freegeoip.net获取数据

时间:2015-08-26 09:15:06

标签: ajax cors

对freegeoip.net的AJAX请求给出“XMLHttpRequest无法加载http://freegeoip.net ....这对于需要预检的跨源请求是不允许的。”

如何在向freegeoip.net进行AJAX时获得回复(我正在尝试传递ip并对其进行地理解码,这意味着使用freegeoip.net获取lat和lng值)。

这是我的AJAX请求,它给出了上述错误:

$.ajax({
            type: "GET",
            url: "http://freegeoip.net/json",
            contentType:'application/json;charset=utf-8',
            data: {format:"json", ip:"176.58.100.115"},
            crossDomain: true
        }).done(function(response){
            console.log("getting geo params..");
            $this.city = response.city;
            $this.country = response.country_name;
            $this.state = response.region_name;
            $this.postcode = response.zip_code;
            $this.lat = response.latitude;
            $this.lng = response.longitude;
            console.log("finished freegeoip..");
        }).fail(function(response){
            console.log("failed");
});

此外,当AJAX调用失败时(CORS等,我仍然无法理解),$ .get似乎获取数据。这是我使用$ .get:

的代码
$.get( "http://freegeoip.net/json/176.58.100.115").done(function(r){
            console.log("getting geo params..");
            console.log(r.city);
            console.log(r.country_name);
            console.log(r.region_name);
            console.log(r.latitude);
            console.log(r.longitude);
            console.log("finished freegeoip..");
     }).fail(function(){
            console.log("failed..");
     });

现在提出问题:

  1. 我知道浏览器不允许跨源AJAX请求,但我该如何解决它(jsonp,代理 - 不知道如何让它工作)?
  2. $ .get始终是阻止通话吗?当AJAX没有时,它是如何工作的?
  3. 任何帮助表示赞赏。感谢。

0 个答案:

没有答案