【问题标题】:Code returns JSON error Uncaught SyntaxError: Unexpected token :代码返回 JSON 错误 Uncaught SyntaxError: Unexpected token :
【发布时间】:2017-05-08 16:09:04
【问题描述】:

这可能已经在其他地方得到了回答,但我一生都无法让它发挥作用。

这是我的html:

        <!Doctype html>
<html ng-app>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
     <script src="JS.js"></script>  
  </head>
  <body>
    <div>
    </div>
  </body>
</html>

这是我的 Js 文件:

$( document ).ready(function() {
  console.log( 'ready!' );

$.ajax({
    url: 'http://steamcommunity.com/market/priceoverview/?appid=730&currency=3&market_hash_name=StatTrak%E2%84%A2%20M4A1-S%20|%20Hyper%20Beast%20(Minimal%20Wear)',
    type: 'GET',
    dataType: 'jsonp',
    success: function(data) {
        console.log(data);
        var lowestprice = $( 'lowest_price' );
        console.log($target);
    }
});
});

查询的结果是:

{"success":true,"lowest_price":"48,--\u20ac","volume":"12","median_price":"51,02\u20ac"}

但我得到了error uncaught SyntaxError: Unexpected token :

在此先感谢您,我正在尝试 Web 编程并且正在苦苦挣扎,因为我更习惯于面向对象编程。

【问题讨论】:

  • 报告的错误来自哪一行。您的 JSON 看起来不错,我看不出(在您发布的代码中)可能会引发该错误。您的代码包含 console.log($target)$target 没有在任何地方定义让我认为您没有显示所有相关部分
  • 它通常会告诉你问题出在哪一行。 js 看起来不错
  • var lowestprice = $( 'lowest_price' );.(类选择器)或#(id 选择器)未与'lowest_price' 一起使用之前将不起作用
  • 那个响应不是 JSONP。你不能只使用 JSONP 来绕过 CORS,api 需要支持它。

标签: javascript jquery html json syntax-error


【解决方案1】:

当您发出 Ajax 请求时,您是说端点是 JSONP。该 api 返回 JSON,因此当它被注入页面时,它会生成您看到的错误。

您不能通过在 Ajax 调用中设置 JSONP 来进行任何调用。 API 需要支持 JSONP。

检查 API 是否支持 JSONP。如果它确实设置了它需要的任何查询字符串参数。如果不支持,则需要使用服务器端代理进行调用。

【讨论】:

  • 什么 api 将支持 JSONP 或者我怎样才能做到这一点。
  • 我不知道那个API是否支持它,你需要阅读它的文档来看看它是否支持。
【解决方案2】:

首先要把它的跨域和url修改为使用HTTPS(我刚刚在w3school的编辑器上试了一下。(否则浏览器会屏蔽这样的url...)

接下来,您需要使用 JSON 而不是 JSONP。之后,您将开始获得状态 200 ok。这是我尝试过的

   $.ajax({
        url: 'https://steamcommunity.com/market/priceoverview/?appid=730&currency=3&market_hash_name=StatTrak%E2%84%A2%20M4A1-S%20|%20Hyper%20Beast%20(Minimal%20Wear)',
        type: 'GET',
           dataType: 'json',
        success: function(data) {
            alert(data);
            var lowestprice = $( 'lowest_price' );
            console.log($target);
        },
           error: function(st, err) {
            alert('vijay');
            alert(st.status);
            alert(err);
           }
    });

现在,你必须添加那个跨域头...这个页面会告诉你详细的解释。

https://www.html5rocks.com/en/tutorials/cors/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多