【问题标题】:SyntaxError: Unexpected token < in JSON at position 0SyntaxError: 位置 0 处的 JSON 中的意外标记 <
【发布时间】:2017-12-24 16:49:53
【问题描述】:

SyntaxError: 位置 0 处 JSON 中的意外标记

使用 ionic 2 检索 json 数据时 这是链接http://areeef.unaux.com/php/platforms.php

这是我用来获取 json 数据的代码

constructor( public navCtrl: NavController, private http: Http) {

this.http.get('http://areeef.unaux.com/php/platforms.php').map(res => res.json()).subscribe(data => {
   console.log(data);
}); }

当我在本地主机上运行相同的 php 代码时,我可以运行该应用程序而不会出现任何错误。但在在线服务器中,它给出了上述错误 那么这是服务器的问题还是我的代码中的错误?

【问题讨论】:

  • 看起来 API 需要一个 Cookie 标头:当我在 Postman 中给它值 __test=53a7c54a89820a57b1404151ef11576c 时,我可以得到 JSON(否则,我会得到一些带有以下消息的 HTML:“本网站需要 Javascript 才能运行,请在您的浏览器中启用 Javascript 或使用支持 Javascript 的浏览器”)。我猜匹配是使用为域 areeef.unaux.com 设置的实际 cookie 执行的(虽然无法理解它是如何设置的),所以这个特定的值可能不适合你。这看起来像一个 CSRF 保护 IMO。
  • 试试 this.http.get(url,body,options).map(res=> (res['_body'])).subscribe(data => { console.log(data) ; });
  • 我必须为正文和选项写什么?
  • 很抱歉,如果您使用的是不需要选项和正文,但我希望您通过 URL 发送一些数据。
  • 我检查了一个有效的 json 文件..但它仍然给我同样的错误。所以可能是服务器的问题。

标签: json http ionic-framework


【解决方案1】:

代码似乎没有问题。问题是因为您的服务器没有返回有效的 JSON。

使用 postman 插件检查 API 的行为。我已经检查过了,它返回无效的 JSON-

此网站需要 Javascript 才能运行,请启用 Javascript 您的浏览器或使用支持 Javascript 的浏览器

所以,先让你的 api 在邮递员上工作。

【讨论】:

  • 我检查了一个有效的 json 文件..但它仍然给了我同样的错误。所以可能是服务器的问题。
  • 可能是服务器配置的原因。
【解决方案2】:

此错误通常是由于服务器返回非 JSON 数据引起的。在这种情况下,PHP 脚本可能会以 HTML 形式返回错误消息,这将导致错误。解决此类错误的最佳方法是独立调试 PHP 脚本或适应在客户端获取 html 和 JSON 数据的可能性。

【讨论】:

    猜你喜欢
    • 2020-07-02
    • 2021-05-06
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多