Парсинг JSON по URL. Как???
Доброго времени суток уважаемые форумчане. Необходима ваша помощь и консультация. Я только начал знакомиться с javascript, и столкнулся со следующей проблемой:
Существует ресурс (магазин игровых вещей) предоставляющий информацию о товаре в виде JSON строки: https://market.csgo.com/api/ItemInfo...52_0/en/?key=1 Я написал простой скрипт, позволяющий получать мне необходимые данные ( Имя товара, его качество и цену): <!DOCTYPE html> <html> <head> <meta charset = "UTF-8"/> </head> <body> <script type="text/javascript"> function info(){ var jsontext = '{"classid":"1293510722","instanceid":"143865972","market_name":"Shadow Case Key","name":"Shadow Case Key","market_hash_name":"Shadow Case Key","rarity":"Base Grade","quality":"","type":"Key","mtype":"CSGO_Tool_WeaponCase","slot":"Normal","description":[{"type":"html","value":"This key only opens Shadow Cases"},{"type":"html","value":" "},{"type":"html","value":"","color":"00a000","app_data":{"limited":1}}],"tags":[{"internal_name":"CSGO_Tool_WeaponCase_KeyTag","name":"Key","category":"Type","category_name":"Type"},{"internal_name":"normal","name":"Normal","category":"Quality","category_name":"Category"},{"internal_name":"Rarity_Common","name":"Base Grade","category":"Rarity","color":"b0c3d9","category_name":"Quality"}],"hash":"5d3588cdec78090c5367203cce582e73","min_price":"15400","offers":[{"price":"15400","count":"6"},{"price":"15889","count":"5"},{"price":"15890","count":"3"},{"price":"15900","count":"9"},{"price":"16214","count":"38"},{"price":"17200","count":"2"},{"price":"19000","count":"6"},{"price":"2000000","count":"9"}],"buy_offers":[{"o_price":"14610","c":"2"},{"o_price":"14500","c":"1"},{"o_price":"14400","c":"1"},{"o_price":"14100","c":"1"},{"o_price":"14000","c":"2"},{"o_price":"13900","c":"1"},{"o_price":"13700","c":"1"},{"o_price":"13504","c":"1"},{"o_price":"13500","c":"1"},{"o_price":"13300","c":"1"},{"o_price":"13000","c":"1"},{"o_price":"12700","c":"1"},{"o_price":"12400","c":"1"},{"o_price":"12100","c":"1"},{"o_price":"11700","c":"1"},{"o_price":"11501","c":"1"},{"o_price":"11000","c":"3"},{"o_price":"10600","c":"1"},{"o_price":"10300","c":"1"},{"o_price":"10000","c":"2"},{"o_price":"1453","c":"1"},{"o_price":"100","c":"1"}]}'; var data = JSON.parse(jsontext); console.log ("Имя: " + data.name + " Качество: " + data.slot + " Цена: " + data.min_price); } info(); </script> </body> </html> Вся загвоздка заключается в том, что полученную JSON строку, мне в ручную приходится копировать в переменную "jsontext". Подумал, что наверняка можно парсить сразу по URL. Почитав еще материал на данную тему - я нашел, что это можно осуществить с помощью $.getJSON. И столкнулся с таким понятием как кроссдоменные запросы. И тупик. Ошибка за ошибкой. Даже простой пример с получением JSON из локального файла, у меня и то не получился.:( <!DOCTYPE html> <html> <head> <meta charset = "UTF-8"/> <script src="jquery.js"></script> </head> <body> <script type="text/javascript"> $.getJSON("test.json", function(json) { console.log(json); // this will show the info it in firebug console }); </script> <hr> <script type="text/javascript"> </script> </body> </html> XMLHttpRequest cannot load file:///C:/Users/Argot/Desktop/test.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.send @ jquery.js:8630 Читаю сейчас про кросдоменные запросы, для меня это темный лес.:cray: Поэтому если кто нибуть, откликнется на мою просьбу и сможет помочь мне или сможет написать готовое решение с парсингом по url, его помощь не останется безвозмездной!:thanks: Заранее благодарен. |
Кроссдоменные запросы, это JSONP, но работать будет только в том случае, если запрашиваемый сервер отдает заголовок разрешающий использование ресурса, в противном случае будет ошибка.
А с локального - ошибка о чем гласит? Только по протоколу и .... Если ресурс не отдает заголовка, то только запросом через свой сервер, который получит данные, вернет клиенту, ну а далее уже разбор. |
Цитата:
А за наводку на JSONP, благодарю!:yes: Будем почитать подробнее. |
Зачем прокси, есть же свой сайт, на чем он? Весь код сервере может быть и:
exit(file_get_contents('url сервера откуда получать json')) и на клиенте запрашивать его посредством Ajax. Более серьезно, это запрос cURL, но тоже просто. |
laimas,
Своего сайта нетю.:( Попробовал JSONP. Сайт https://market.csgo.com его не поддерживает. Ищу решение дальше. |
А для чего тогда эти JSON данные вам нужны, что вы пытаетесь сделать?
|
Удивительно, сайт предоставляет API, но при этом запрещает к нему обращаться.
|
Цитата:
Цитата:
|
Цитата:
EnoD, если не хочешь пользовать что-то кроме JS, раскуривай ноду |
Цитата:
|
Часовой пояс GMT +3, время: 08:24. |