【问题标题】:Uncaught SyntaxError: Unexpected number JSON ajax request未捕获的 SyntaxError:意外的数字 JSON ajax 请求
【发布时间】:2013-07-18 22:47:06
【问题描述】:

我正在尝试向网站发出获取请求并获得响应。

我能够成功地进行 HTTP 请求和响应,但由于某种原因弹出了 javascript 错误并破坏了我的代码。

我假设这是因为它附加了新的查询参数,比如 http://checkip.amazonaws.com/?callback=jQuery152011860558553598821_1374187260201&_=1374187260214

代码在这里:

http://jsfiddle.net/R7EPt/191/

$('document').ready(function() {
    var url = 'http://checkip.amazonaws.com/';
    $.getJSON(url + "?callback=?", null, function(data) {
        alert(data);
    });
 });

谁能帮帮我!

【问题讨论】:

  • 不,那只是jQuery添加的一个参数,用来防止浏览器缓存你刚刚完成的请求
  • 那么您认为错误会是什么?它指向此链接并显示 Uncaught SyntaxError: Unexpected number。你可以试试jsfiddle.net/R7EPt/191
  • 我认为问题在于检索到的内容本身,它不是有效的 JSON,您应该使用简单的$.get 进行请求,请参阅here
  • 但是通过简单的获取它会引发跨域错误。
  • 我不知道如何解决这个问题,但我有一个旁注:它是 $(document),而不是 $('document'),因为 document 是一个对象而不是 HTML 标记跨度>

标签: javascript ajax json jquery jsonp


【解决方案1】:

您正尝试从客户端发出 JSONP 请求,但服务器未返回 JSONP 响应。请求 checkip.amazonaws.com/?callback=foo 的 JSONP 响应如下所示:

foo("192.168.0.1");

而不仅仅是这样:

192.168.0.1

编辑

通过JSONP接收用户IP的解决方案: Get user ip with jquery

【讨论】:

  • 我理解了这个问题。那么有没有办法让它在我的场景中工作。
  • 是的,更改服务器端响应。如果您不是服务器所有者,那么您无能为力。
  • 顺便说一下,可以通过不同的方式获取用户的IP。
  • 您能建议我使用任何可以获取 IP 的启用 CORS 的网站吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2017-01-05
相关资源
最近更新 更多