jQuery $.getJSON выдает неожиданный токен

Я новичок в JavaScript. Я хочу получить некоторые данные из Steam Market, используя следующий URL-адрес:

https://steamcommunity.com/market/priceoverview/?country=PL&currency=3&appid=730&callback=?&market_hash_name=Operation%20Vanguard%20Weapon%20Case#

Я получаю этот ответ в своем браузере:

{"success":true,"lowest_price":"0,09\u20ac","volume":"1,017","median_price":"0,10\u20ac"}

Но я не могу заставить его работать в JS.

var amount = prompt("How many cases do you have?\t");
$.getJSON("http://steamcommunity.com/market/priceoverview/?country=PL&currency=3&appid=730&callback=?&market_hash_name=Operation%20Vanguard%20Weapon%20Case#",
    function(json) {
    var raw_price = json.lowest_price;
    var price = raw_price.split('&')[0];
    var price_total = price*parseInt(amount);
    alert(price_total + '€');
});

Меня просто бросает:

Uncaught SyntaxError: Неожиданный токен:

Что не так с этим кодом?


person Kartm    schedule 04.04.2015    source источник


Ответы (2)


Вот твоя проблема. я побежал

$.ajax( "https://steamcommunity.com/market/priceoverview/?country=PL&currency=3&appid=730&callback=?&market_hash_name=Operation%20Vanguard%20Weapon%20Case" )
  .done(function() {
    alert( "success" );
  })
  .fail(function(jqXHR, textStatus) {
console.log(jqXHR );
});

И получил этот вывод

XMLHttpRequest cannot load https://steamcommunity.com/market/priceoverview/?country=PL&currency=3&appid=730&callback=?&market_hash_name=Operation%20Vanguard%20Weapon%20Case. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://fiddle.jshell.net' is therefore not allowed access.

Это означает, что вы не можете сделать это с помощью JQuery. Попробуйте использовать веб-API Steam: https://developer.valvesoftware.com/wiki/Steam_Web_API

person mkaminsky    schedule 05.04.2015
comment
Я понятия не имею, как использовать веб-API Steam. Можете ли вы привести пример получения цены товара? - person Kartm; 05.04.2015
comment
Насколько я могу судить, у вас есть 2 варианта: 1) если у вас есть домен: steamcommunity.com/dev/ апикей. 2) если вы используете Node.js, PHP и т. д., вы можете использовать что-то вроде npmjs.com /package/steam-community . На это нет простого ответа, что довольно глупо. - person mkaminsky; 06.04.2015
comment
Не существует API Steam для получения цены товара на рынке. URL-адрес, который использует OP, подойдет. Независимо от того, использует ли он API или вышеупомянутый URL-адрес, он все равно получит эту ошибку, потому что Steam запретил использовать их URL-адреса из JavaScript. Google «Междоменные запросы JavaScript». См. мой (несколько более старый) ответ о том, как узнать цену предмета на рынке Steam здесь: stackoverflow.com/a/ 25665733/2634190 - person Stephen Lake; 10.04.2015

Проблема была в конечном итоге решена мной. Проблема заключалась в том, что Steam не разрешал доступ к своим рыночным данным с помощью кода JavaScript в браузере из-за Access-Control-Allow-Origin.

Я переписал свой JS-код на PHP и отправил тот же запрос, но на этот раз с моего собственного WWW-сервера:

function get_price() {
    $url = "https://steamcommunity.com/market/priceoverview/?country=PL&currency=3&appid=730&callback=?&market_hash_name=Operation%20Vanguard%20Weapon%20Case";
    $json = file_get_contents($url);
    $price = json_decode($json);
    $price_case = $price->{"lowest_price"};
    return number_format($price_case, 2);
}

Работал как шарм.

person Kartm    schedule 16.09.2018