代码返回JSON错误Uncaught SyntaxError:意外的令牌:

时间:2017-05-08 16:09:04

标签: javascript jquery html json syntax-error

这可能已在其他地方得到解答,但我对我的生活却无法实现这一点。

这是我的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 :

提前感谢您,我正在尝试使用网络编程,并且我正在努力工作,因为我更习惯面向对象编程。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

首先,它的跨域和网址应该被修改为使用HTTPS(我只是在w3school的编辑器上试过它。(否则,浏览器会阻止这样的网址...)

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

   $.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/