0

我正在尝试制作一个 Javascript,它正在获取一个 json(IP 数据)并使用 AJAX 从中检索数据(GEO IP),这就是我到目前为止所拥有的

$(document).ready(function(){
    var path_to_the_webservice = "http://www.pathtothescript.com/check.php";
    $.ajax({
        url: path_to_the_webservice,
        success: function(html)
        {
            if(html)
            {
                alert('3');
                $('#content').append(html);                         
            }
            else
            {
                alert('4');
            }
        }
    });
});

我得到警报(4),为什么?

基本上,当您http://www.pathtothescript.com/check.php从浏览器访问时,会检索我必须解析的 JSON

$.getJSON(path_to_the_json,
function(data) 
{
    $.each(data, function(i,item)
    {

    });
}

但我不知道怎么做。

json看起来像这样http://j.maxmind.com/app/geoip.js

有什么帮助吗?谢谢!

4

1 回答 1

0

它可能是由同源策略引起的。

尝试使用 JSONP 请求:

$.getJSON('http://example.com?callback=?', function(data) {
    console.log(data);
});

处理来自http://j.maxmind.com/app/geoip.js的响应

// Actually we can send regular AJAX request to this domain
// since it sends header Access-Control-Allow-Origin:*
// which allows cross-domain AJAX calls.
$.get('http://j.maxmind.com/app/geoip.js', function(data) {

    console.log('Retrieved data:',
                data,
                'is type of', typeof data);

    // Now we have some functions to use:
    console.info('Some info:', geoip_country_name(),
                geoip_latitude(),
                geoip_longitude());
});​

小提琴


更新:

在聊天中,我们发现我之前的示例在 Google Chrome 中运行良好,但在 Mozilla Firefox 中无法运行。虽然我玩了一点并找到了解决方案:

// Actually we can send regular AJAX request to this domain
// since it sends header Access-Control-Allow-Origin:*
// which allows cross-domain AJAX calls.
$.ajax({
    url: 'http://j.maxmind.com/app/geoip.js',
    type: 'GET',
    success: function(data) {
        // Now we have some functions to use:
        alert(geoip_country_name() + ': (' 
              + geoip_latitude() + '; ' 
              + geoip_longitude() + ')');
    },
    error: function(e) {
        console.log('Error:', e);
    },
    contentType: 'application/javascript; charset=ISO-8859-1',
    dataType: 'script'
});

​</p>

Fiddle
我还根据服务文档设置了一个字符集。

于 2012-10-21T21:25:31.603 回答