Не работает функция получения данных с помощью вызова jQuery. Помогите мне, пожалуйста [дубликаты]

0
             function getDept() {
                var deplist;
                //Get Department
                $.ajax({
                    type: 'GET',
                    url: '@(Url.Action("getDeptFK", "Settings"))',
                    dataType: "jsonp",
                    success: function (data) {
                        deplist = JSON.parse(JSON.stringify(data));
                    }
                });
                return deplist;
            }

функция возвращает undefined, но значение отладки при успешной работе!

  • 1
    Я надеюсь, вы понимаете, что JSON.parse(JSON.stringify(data)) больше не нужен. Это так же полезно, как x - 5 + 5 . Просто используйте data напрямую. Нет необходимости сначала преобразовывать объект / массив в JSON, а затем анализировать JSON обратно в объект / массив.
Теги:
asp.net-mvc

1 ответ

2
Лучший ответ

Ajax асинхронен, поэтому вы ничего не можете вернуть.

Один из способов - переписать getDept() на это:

function getDept() {
    var deplist;
    //Get Department

    return $.ajax({
        type: 'GET',
        url: '@(Url.Action("getDeptFK", "Settings"))',
        dataType: "jsonp",
        success: function (data) {
            deplist = JSON.parse(JSON.stringify(data));
        }
     });
}

то вы можете передать его переменной:

var result = getDept();

и получить данные, возвращаемые вызовом AJAX следующим образом:

result.success(function (data) {
    console.log(data);
});
  • 0
    Разве JSONP не является синхронным по умолчанию?
  • 0
    Моя ошибка: Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню