【发布时间】:2013-03-25 01:52:46
【问题描述】:
从昨天开始,我一直在为下面的代码苦苦挣扎。
function findLocation(){
alert(1);
$.getJSON( "http://www.omc4web.com/geoip/geoip.php",
{ip: "127.0.0.1",
callingurl: "www.thissite.com" },
function( result ){
alert(2);
$.each(result, function(i, field)
{
alert(i);
if(i=="country")
{
country_code = field;
}
});
})
}
它似乎不想超越 php 脚本的调用。返回的数据是{"country":"US","store":"US"},但该函数似乎不想处理它,我从来没有得到警报(2)。我已经在 php 脚本中放置了监视器,我可以看到它确实使用正确的参数被调用,并且它确实返回了预期的数据。
如果您从浏览器调用http://www.omc4web.com/geoip/geoip.php?ip=127.0.0.1&callingurl=www.thissite.com,您将看到返回的数据。
调用不带参数的 URL 的同一段代码行为正确,但上述设置不正确。
我剩下的几根头发会很感激这方面的帮助。
附加信息:
header('Content-type: application/json');在php脚本上设置
在 chrome 和 firefox 上试过
firebug 上没有错误显示,只是一个空白的响应屏幕
从本地主机运行脚本,但如果它是一个跨域问题,为什么我能够对亚马逊进行类似的调用(不带参数)?
$.getJSON("http://freegeoip.net/json/",function(result){和流行的 flickr 示例一样工作正常。- 我正在使用
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
提前致谢
奥西
【问题讨论】:
-
你能设置一个小提琴 - jsfiddle.net吗?
-
如果您转到您发布的链接,这是很好且有效的 JSON,但它不是 JSONP,所以除非 getJSON 调用也来自同一个域,否则这将不起作用,除非您更改服务器端脚本以输出有效的 JSONP,包括回调。
-
您是否在错误控制台中收到类似 Origin
is not allowed by Access-Control-Allow-Origin 的信息? -
我完全看不到萨尔曼。但是使用 jsonp 确实解决了我的问题。
标签: javascript jquery getjson