jQuery .get не получает данные с действительного URL - PullRequest
0 голосов
/ 25 марта 2020

TLDR

jQuery.get() правильно извлекает информацию заголовка для одного значения select option onchange, но не для других, даже если они являются действительными URL.


Цель

Использование jQuery и GitLab API для проверки информации заголовка значения select при изменении пользователем и перед отправкой формы.


Процесс

  • Пользователь выбирает значение из select с классом opt0.
  • onchange, звонки jQuery.
  • jQuery проверяет, что URL существует (и будет в конечном итоге go on для проверки деталей массива).
  • jQuery возвращает массив существующего URL на консоль разработчика Chrome (на данный момент).
  • jQuery в конечном итоге вернет неверный URL-адрес в виде сообщения консоли или alert().

Фактические результаты

Консоль сообщает, что проект не найден для допустимых URL-адресов.

Выбор каждого из значений приводит к следующей информации консоли:

Имейте в виду, что все URL действительны и содержат правильные данные массива, которые я ищу.


Ожидаемые результаты

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

  • xxxxxxx: (9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
  • ггггггг: (3) [{…}, {…}, {…}]
  • zzzzzzz: (5) [{…}, {…}, {…}, {…}, {…}]

Ошибки

Возвращены сообщения об ошибках:

Я вошел в gitlab, поэтому аутентификация не должна быть проблемой.


Попытка

  • $.load() - то же самое результат.

  • $.ajax() - тот же результат.

  • $.get() - показан с ошибкой. Я подумал, что я go с этим из-за его простоты.

  • parseInt(this.value) - тот же результат.

  • var url = encodeURIComponent("https://gitlab.com/api/v4/projects/" + parseIntthis.value) + "/repository/tree"); - не ' t load URL

  • Chrome консоль разработчика> Сеть> очистить кеш браузера

  • Chrome консоль разработчика> Сеть> XHR> Инициатор - > Путь и цепь выглядят правильно.


Код

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $(".opt0").change(function(){
                    var url = "https://gitlab.com/api/v4/projects/" + this.value + "/repository/tree";
                    $.get(url, function( data ) { 
                        console.log(data);
                    }, "json" );  
                });
            });
        </script>
    </head>
    <body>
        <?php
            $menu = array('xxxxxxx', 'yyyyyyy', 'zzzzzzz');
            echo "<select name=selex class='opt0'>";
                echo "<option value=''>---</option>";
                foreach ($menu as $option) {
                    echo "<option value=$option>$option</option>";
                }
            echo "</select>";
        ?>
    </body>
</html>

1 Ответ

0 голосов
/ 25 марта 2020

В конце концов ответ оказался проблемой аутентификации.

<script>
    $(document).ready(function(){
        $(".opt0").change(function(){
            var url1 = "https://gitlab.com/api/v4/projects/"+this.value+"/repository/tree";
            var settings = {
              "async": true,
              "crossDomain": true,
              "url": url1,
              "method": "GET",
              "headers": {
                "PRIVATE-TOKEN": "<your token>"
              }
            }
            $.ajax(settings).done(function (response) {
                console.log(response);
            });
        });
    });
</script>
...