【问题标题】:$.getJSON - unable to catch response when using parameters in url$.getJSON - 在 url 中使用参数时无法捕获响应
【发布时间】: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


【解决方案1】:

我认为这是一个跨域问题。我猜你可以使用freegeoip.net,因为你使用的是JSONP。尝试查看 jQuery 文档以了解如何使用 JSONP:jQuery.getJSON()

【讨论】:

  • JSONP 是要走的路。实现了回调函数,世界又是一个快乐的地方。非常感谢你们的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多