$ работает нормально, но $ .ajax не является функцией (не тонкой) - PullRequest
0 голосов
/ 03 июня 2019

У меня есть некоторые проблемы с моим кодом jQuery.Я загружаю jQuery ( not slim ), и $ .ajax терпит неудачу.'$' и 'jQuery' работают нормально.

Возможно, это очень простое решение, но я не могу его найти ...

Это первое использование jQuery в моем проекте.

Uncaught TypeError: $ .ajax не является функцией

Uncaught TypeError: jQuery.ajax не является функцией

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
    $(document).ready(function () {
        $("#ddlBoard").on("change", function () {
            $list = $("#ddlRow");
            $.ajax({
                url: "Settings/row",
                type: "GET",
                data: { id: $("#ddlBoard").val() }, //id of the state which is used to extract cities
                traditional: true,
                success: function (result) {
                    console.log(result)
                    $list.empty();
                    $.each(result, function (i, item) {
                        $list.append('<option value="' + item["CityId"] + '"> ' + item["Name"] + ' </option>');
                    });
                },
                error: function () {
                    console.log("err")
                    alert("Something went wrong call the police");
                }
            });
        });
    });
</script>

...все дело в ядре asp.net MVC здесь больше ...

<form asp-controller="Settings" asp-action="Login" method="post">
<select id="ddlBoard" name="board">
            @if (userIndex == 0 || userData[userIndex].ProjectId == null)
            {
                <option selected disabled value="-1">Plantafel auswählen</option>
            }
            @for (int i = 0; i < projectData.Count; i++)
            {
                if (userIndex != 0 && userData[userIndex].ProjectId == projectData[i].Idx)
                {
                    <option selected value="@projectData[i].Idx">@projectData[i].projectName</option>
                }
                else
                {
                    <option value="@projectData[i].Idx">@projectData[i].projectName</option>
                }
            }
        </select>



<!--Row-->
        <!--todo update this after project change and show only rows from one project-->
        <select id="ddlRow" name="row">
            @if (userIndex == 0 || userData[userIndex].RowId == null)
            {
                <option selected disabled value="-1">Zeile auswählen</option>
            }
            @for (int i = 0; i < rowData.Count; i++)
            {
                if (userIndex != 0 && userData[userIndex].RowId == rowData[i].Idx)
                {
                    <option selected value="@rowData[i].Idx">@rowData[i].RowName</option>
                }
                else
                {
                    <option value="@rowData[i].Idx">@rowData[i].RowName</option>
                }
            }
        </select>
</form>

Code as Screenshot

1 Ответ

1 голос
/ 03 июня 2019

Файл ASP.NET Core MVC _Layout.cshtml загружает уменьшенную версию jquery в конце файла после @RenderBody (), но до @ RenderSection.

<!-- jQuery CDN - Slim version (=without AJAX) -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

Тонкая версия (= без AJAX)

Facepalm

Заменить тонкий импорт на "нормальный" импорт

Благодаря filipe, можно проверить правильность версии. Просто сделайте console.log(jQuery.fn.jquery); в положении, в котором у вас есть проблема

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