ПОЛУЧЕНИЕ межсайтовых данных JSON с использованием JavaScript или JQuery - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь получить некоторые данные JSON из следующего URL .У меня проблемы с выполнением этой работы.

Видите ли, я пытаюсь интегрировать школьное меню обеда через NutriSlice.Мы используем систему цифровых вывесок под названием RiseVision, и у них есть HTML-виджет.Это, конечно, означает, что я могу использовать только HTML и JavaScript, - усложняет мне задачу.

Мой код выглядит следующим образом:

    <!DOCTYPE html>
<html>
<head lang="en">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta charset="UTF-8">
    <script src="https://code.jquery.com/jquery-2.2.0.js"></script>
</head>
<body>

    <div>test</div>

    <script>

    $.ajax({type: "get",
            url: "https://brf.nutrislice.com/menu/api/digest/school/black-river-falls-high-school/menu-type/lunch/date/2018/10/16/",
            data: {method: "getQuote",format: "json",lang: "en"},
            dataType: "jsonp",
            jsonp: "jsonp",
            jsonpCallback: "myJsonMethod"
    }); 

    function myJsonMethod(response){
  $("div").append(" " + response);
}
    </script>
</body>
</html>

Ничто не работает для этого.Ничто не возвращается.Зачем?Я не уверен, что я делаю неправильно.Ссылка, которую я прикрепил выше, показывает страницу Django для API, который я смотрю здесь.

Ваша помощь очень ценится!:)

РЕДАКТИРОВАТЬ:

var obj = jQuery.parseJSON( response );
    $("div").append(" " + obj.menu_items[0]);

Дополнительные пояснения: Вот пример JSON из необходимых мне данных.

{"date":"2018-10-16","menu_items":["Taco Meat","Shredded Cheddar","Tortilla Chips","Tortilla Shell"],"images":["https://client-food-images.nutrislice.com/images/WD/WDeTEDdT2YDit97pdpUq7T/1474319790_787275__taco.jpg.1024x0_q85.jpg","https://client-food-images.nutrislice.com/images/eR/eRQamewxbJbFdAAbkUa5UK/1472157292_144997__ShrededCheddarCheese-IGH.jpg.1024x0_q85.jpg","https://client-food-images.nutrislice.com/images/4N/4NrHbqSdtFSa9HjQTM4WwT/1472157795_18851__tortillachips-m.jpg.1024x0_q85.jpg","https://client-food-images.nutrislice.com/images/wx/wx7bT4QGjLD8wNuK9oMtki/1473879858_737966__tortilla.jpg.1024x0_q85.jpg"],"holiday_text":null}

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Проверьте консоль (щелкните правой кнопкой мыши на странице, затем осмотрите элемент).Вы, вероятно, увидите что-то вроде этого:

CORB message

Кажется, что вы используете защиту, специально разработанную для предотвращения того, что вы пытаетесь сделать, то естьотправить из неизвестного места запрос данных страницы.Я не эксперт по CORB, но, надеюсь, это укажет вам правильное направление.

0 голосов
/ 17 октября 2018
  1. изменить dataType: "jsonp", на dataType: "json",.Это json, а не jsonp
  2. удалить строку jsonp: "jsonp", или изменить на jsonp: false,
  3. изменить jsonpCallback: "myJsonMethod" на success: myJsonMethod.уберите двойные кавычки вокруг myJsonMethod.
  4. в функции myJsonMethod, замените $("div").append(" " + response); на $("div").append(" " + response.menu_items[0]);

На экране появится надпись «test Taco Meat».

0 голосов
/ 16 октября 2018

Это будет работать

$.ajax({
    type: "get",
    url: "https://brf.nutrislice.com/menu/api/digest/school/black-river-falls-high-school/menu-type/lunch/date/2018/10/16/",
    data: {
        method: "getQuote",
        format: "json",
        lang: "en"
    },
    dataType: "json",
    success: function(response) {
        console.log(response); // check the console
        $(".s").append(" " + response)// this will not work properly
    }
});

имейте в виду, что вы пытаетесь добавить объект json в HTML-документ, который не будет хорошо отображаться, вам придется взять эти данные и использовать ихтаким образом, чтобы они правильно отображались в div

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...