Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Распарсить api (https://javascript.ru/forum/misc/71688-rasparsit-api.html)

KATRIN1786492 05.12.2017 16:58

Распарсить api
 
Добрый день! Помогите, пожалуйста, распарсить api(любое) с помощью этих функций, вот пример. Не понимаю....Можно любое api, помогите :(

Dilettante_Pro 05.12.2017 17:30

KATRIN1786492
а в чем проблема?

<div id="data"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
          var renderData = function(){
            $.getJSON("https://api.icndb.com/jokes/random/10", function(data){
                console.log(data) // просто выводим в консоль полученный Json
            });
    }
    renderData();

    var my_getJSON = function(url) {
        return new Promise(function(resolve, reject) {
            var xhr = new XMLHttpRequest();
            xhr.open('get', url, true);
            xhr.responseType = 'json'; 
            xhr.onload = function() {
                var status = xhr.status;
                if (status == 200) {
                    resolve(xhr.response);
                } else {
                    reject(status);
                }
            };
            xhr.send();
        });
    };
var i=0;

    my_getJSON('https://api.icndb.com/jokes/random/10').then(
        function(data) { var end=data.value.length;var datum=document.getElementById("data");
                        for(i=0;i<end;i++) {datum.innerHTML += "<br>"+i+")"+data.value[i].joke;}; }, // resolve
        function(status) {alert('Something went wrong.');}      // reject
    );
})
</script>

KATRIN1786492 05.12.2017 17:47

оно все работает, Все хорошо, но это пример, мне нужно распарсить какой-то свое api, использую эти функции, а я не понимаю как(

Dilettante_Pro 05.12.2017 18:02

KATRIN1786492,
Цитата:

Сообщение от KATRIN1786492
мне нужно распарсить какой-то свое api,

А оно у вас есть?

KATRIN1786492 05.12.2017 18:12

я пробовала парсить это, но у меня не получилось ( https://api.opendota.com/api/proMatches

KATRIN1786492 05.12.2017 18:15

вот так я пробовала

$(document).ready(function () {
          var renderData = function(){
            $.getJSON("https://api.opendota.com/api/proMatches", function(data){
                console.log(data) // просто выводим в консоль полученный Json
            });
    }
    renderData();

    var my_getJSON = function(url) {
        return new Promise(function(resolve, reject) {
            var xhr = new XMLHttpRequest();
            xhr.open('get', url, true);
            xhr.responseType = 'json'; 
            xhr.onload = function() {
                var status = xhr.status;
                if (status == 200) {
                    resolve(xhr.response);
                } else {
                    reject(status);
                }
            };
            xhr.send();
        });
    };
var i=0;

    my_getJSON('https://api.opendota.com/api/proMatches').then(
        function(data) { var end=data.value.length;var datum=document.getElementById("data");
                        for(i=0;i<end;i++) {datum.innerHTML += "<br>"+i+")"+data.value[i];}; }, // resolve
        function(status) {alert('Something went wrong.');}      // reject
    );
})

Dilettante_Pro 06.12.2017 12:56

<div id="data"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
          var renderData = function(){
            $.getJSON("https://api.opendota.com/api/proMatches", function(data){
                console.log(data) // просто выводим в консоль полученный Json
            });
    }
    renderData();

    var my_getJSON = function(url) {
        return new Promise(function(resolve, reject) {
            var xhr = new XMLHttpRequest();
            xhr.open('get', url, true);
            xhr.responseType = 'json'; 
            xhr.onload = function() {
                var status = xhr.status;
                if (status == 200) {
                    resolve(xhr.response);
                } else {
                    reject(status);
                }
            };
            xhr.send();
        });
    };
var i=0;

    my_getJSON('https://api.opendota.com/api/proMatches').then(
        function(data) { var end=data.length;var datum=document.getElementById("data");
                        for(i=0;i<end;i++) {datum.innerHTML += "<br>"+i+")"+data[i].league_name;}; }, // resolve
        function(status) {alert('Something went wrong.');}      // reject
    );
})
</script>

KATRIN1786492 07.12.2017 09:17

вы получается кусочек парсите, а подскажите, пожалуйста, как все эти пункты распарсить и чтобы они в одном списке были?

Dilettante_Pro 07.12.2017 11:26

KATRIN1786492,
Объекты

Ermite 07.12.2017 19:17

Проще будет использовать что-то типа такого:
<html>
	<head>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
	</head>
	<body>
		<div id="result"></div>
		
		<script>
		// Получаем массив
		$(document).ready(function(){
			$.getJSON('https://api.opendota.com/api/proMatches', my_getJSON); // вызываем callback-функцию
		});

		// парсим массив data 
		function my_getJSON(data)
		{
			"use strict";
			// сюда будем пихать результат
			let str = '';
			
			for (let a = 0; a < data.length; a++)
			{
				str += data[a].radiant_name + ' VS ' + data[a].dire_name + '<br>';
			}
			
			// выводим результат
			$("#result").html(str);
		}
		</script>
	</body>
</html>


Часовой пояс GMT +3, время: 18:25.