У меня есть функция JavaScript, которая просит некоторые ajax данные и возвращает объект JSON. Затем это должно возвратить объект.
Проблема состоит в том, что я не знаю, как сделать функциональный возврат из обратного вызова Ajax. Конечно,
myFunction: function() {
$.get(myUrl, function(data) {
return data;
});
}
не работает, потому что внутренняя функция возвращается вместо внешнего.
С другой стороны, выполнение, в чем я нуждаюсь только в обратном вызове, повредит мое подразделение MVC: этот код находится в модели и мне d'like для использования объекта результата в контроллере.
Временное обходное решение
myFunction: function() {
var result = $.ajax({
url: myUrl,
async: true,
dataType: 'text'
}).responseText;
return eval(result);
}
который имеет недостаток блокирования браузера при ожидании ответа (и с помощью оценки, которой я избежал бы).
Есть ли какие-либо другие решения?
Вы могли бы просто передать обратный вызов к вашей функции, чтобы обработать данные, когда она готова:
myFunction: function(callback) {
$.get(myUrl, function(data) {
callback( data );
});
}
Почему вы хотите, чтобы это вернуть объект? Если вы намереваетесь использовать этот объект после, лучший способ поставить функцию с использованием данных в обратный вызов.