Хорошо, я знаю, что подобные вопросы, вероятно, задавались десятки раз, но я не могу найти работающее решение для своего проекта. В последнее время, используя jQuery для множества вызовов AJAX, я оказался в форме ада обратного вызова. Вопрос о том, является ли jQuery слишком мощным для этого проекта, выходит за рамки этого вопроса. В общем, вот код, который показывает, что происходит:
function check_form(table)
{
var file = "/models/"+table+".json";
var errs = {};
var xhr = $.getJSON(file, function(json)
{
for (key in json)
{
var k = key;
var r = json[k];
$.extend(errs, check_item("#"+k,r));
}
});
return errs;
}
И ... как вы, наверное, догадались, я получил пустой объект. Моя первоначальная идея заключалась в том, чтобы использовать какую-то идею onReadyStateChange
, которая возвращалась бы всякий раз, когда readyState
наконец-то достигнет 4. Однако это заставляет мое приложение зависать бесконечно. Мне нужны эти ошибки, чтобы решить, разрешено ли отправлять форму или нет (а также сообщить пользователю, где находятся ошибки в приложении. Есть идеи?
Редактировать. Это не самое красивое решение, но мне удалось заставить его работать. По сути, check_form передает json из другой функции вместо загрузки. Я тоже уже загружал его туда, так что, вероятно, лучше не продолжать загружать один и тот же файл снова и снова. Я просто беспокоился о перегрузке памяти. Эти файлы не совсем большие, поэтому, наверное, все в порядке.