我正在尝试制作一个Javascript来获取json(IP DATA)并使用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
时,请重新启动我必须使用
$.getJSON(path_to_the_json,
function(data)
{
$.each(data, function(i,item)
{
});
}
但我不确定如何制作它。
json看起来像http://j.maxmind.com/app/geoip.js
有任何帮助吗?谢谢!
答案 0 :(得分:0)
可能由Same origin policy引起。
尝试使用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'
});
Fiddle
我也相应地设置了一个charset来服务documentation。