Как использовать запрос API GET на HTML-странице с javascript / ajax для получения данных? - PullRequest
0 голосов
/ 02 июня 2019

Я следую этой документации: https://docs.oracle.com/cloud/latest/marketingcs_gs/OMCAC/DeterminingBaseURL.html

Использование базовой аутентификации.

Я уже определил базовый URL, поэтому я использую базовый URL прямо в коде.

Я не на 100%, если мне нужен код авторизации или нет (не знаю, как я его получу), поэтому я не использую это в своем коде: https://docs.oracle.com/cloud/latest/marketingcs_gs/OMCAC/Authentication_Basic.html

Я пытаюсь получить список писем с помощью простого запроса GET, как здесь: https://docs.oracle.com/cloud/latest/marketingcs_gs/OMCAC/api-application-2.0-emails.html

Пока я создал этот код, но не вижу успеха? Зачем? есть ли проблема с моим кодом? Может кто-нибудь помочь, пожалуйста?

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            var username = "MYUSERNAME";
            var password = "MYPASSWORD";

            function make_base_auth(user, password) {
                var tok = user + ':' + password;
                var hash = btoa(tok);
                return "Basic " + hash;
            }

            var url1 = 'https://BASEURL.com/api/REST/2.0/assets/emails';

            $.ajax
                ({
                    type: "GET",
                    url: url1,
                    dataType: 'jsonp',
                    cache: false,
                    //contentType: 'application/x-www-form-urlencoded',
                    headers: {                        
                        'Accept': 'text/html',
                        'Content-Type': 'application/json',
                        'Content-Type': 'application/x-www-form-urlencoded',
                        'Access-Control-Allow-Origin': '* ',
                        'Access-Control - Allow - Headers': 'Origin, X-Requested - With, Content-Type, Accept'
                    },
                    //async: false,
                    //data: '{}',
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader('Authorization', make_base_auth(username, password));
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus, errorThrown);
                        console.log(errorThrown);
                    },
                    success: function (result) {
                        console.log(result);
                        alert('success - this is working');
                    }
                    //success: function (jsondata) {
                    //    console.log(status);
                    //}
                });

        });

    </script>
</head>
<body>





</body>
</html>

Я получаю ошибку CORP в журнале. На основании предоставленной мною документации мне нужно передать «Авторизация» в заголовке? Если да, как я могу получить код авторизации?

Как сообщить об ошибке CORP?

В окне предупреждения отображается только «ошибка».

Console log in Chrome

1 Ответ

2 голосов
/ 02 июня 2019

Пожалуйста, отметьте это codepen (я сделал это с вашим кодом) и замените его своим реальным запрашивающим URL.

Когда вы нажмете на кнопку, вы увидите, что URL запрашиваетсяуспешно, как показано на изображении

enter image description here

Убедитесь, что вы используете dataType: 'jsonp' для межсайтовых запросов.

Кроме того, в вашем кодев конце строки success: function (result) {' есть лишняя одинарная кавычка, удалите ее.

Для alert("done") она всегда выполняется, поскольку она не является частью асинхронного процесса.выполняется сразу после запуска команды ajax.

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