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, но значение отладки при успешной работе!
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);
});
JSONP
не является синхронным по умолчанию?
Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation
JSON.parse(JSON.stringify(data))
больше не нужен. Это так же полезно, какx - 5 + 5
. Просто используйтеdata
напрямую. Нет необходимости сначала преобразовывать объект / массив в JSON, а затем анализировать JSON обратно в объект / массив.