Последовательное выполнение ajax-запросов

HEm

Сетевой бобер
Возникла такая задача. Есть у нас калькулятор расчета работ по ремонту авто, данные раскиданы по куче json-файлов (типа дерево: файл со списком моделей, файл со списком работ для каждой модели, файл со списком операций, запчастей и их связи для каждой работы). Клиент попросил дать ему список запчастей. Сначала я хотел написать выборку этих данных с использованием jQuery, но после долгих топтаний уяснил, что данные тащутся ajax-ом параллельно, т.е скрипт примерно такого вида
PHP:
	var out = '';
	for ( var m_no in models ) {
		var alias = models[m_no];
		out += 'alias:' + alias + '<br />';
		$.ajax({
			'url':	json_root + alias + '.json',
			'cache':	false,
			'dataType': 'json',
			'success':	function( json ){
				works_sr = json['works_sr'];
				out += 'work:' + works['title'];
				return true;
			},
			'error': function( xmlhttp, ts, error ) {
				alert('Ошибка загрузки данных модели.');
			}
		});
	}

	$('.aaa').html(out);
выдает только список алиасов.

Объясните мне, кто ведает, почему мне на все попытки вытащить файлы выдается alert, хотя по консоли файрфокса вижу, что файлы приняты скриптом?
Можно ли как то заставить скрипт выполнять ajax-запросы друг за другом?

И да, устав бороться с jQ, пишу сейчас эту вытяжку на пхп, который, честно сказать, давно в руки не брал, поэтому вопрос больше теоретический.
И нет, это не воровство контента, калькулятор писался нашим программистом, сильно переделан мною и все мегабайты данных я честно вбивал сам, сейчас не могу найти исходных данных в xls ;(
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Я сначала подумал что это кто-то с похожим ником.
эмммм... ну, потому что в тот момент когда ты пытаешься вывести список, никаких данных еще нет — они отсылаются, а когда каллбеки вызовутся — еще неизвестно, и как правило, это будет позже твоего .html(out);
 

HEm

Сетевой бобер
это я понял
почему алерты, если в консоли видно GET file.json, при развороте там есть ответ с телом этого файла, есть вкладка JSON, то есть все принято нормально
 

флоппик

promotor fidei
Команда форума
Партнер клуба
alert(ts)
Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error."
 

HEm

Сетевой бобер
хм, я ведь выводил error, оно писало undefined
а сейчас пишет SyntaxError: JSON.Parse: expected property name or }
 

HEm

Сетевой бобер
возможно по причине того что сейчас подключил версию jquery посвежее, с гуглапи
 

HEm

Сетевой бобер
нашел, можно отключить последовательное выполнение с помощью опции async
ну и проблемы были с валидностью json, использовались одинарные кавычки и комментарии
 

HEm

Сетевой бобер
ну, конкретно к данной задаче сработало, это же одноразовая задача

в калькуляторе применялась локально размещенная старая версия jQuery (), не столь дотошно требующая чистоты json-кода, не требующая задавать ключи как строчки, не требующая двойных кавычек...

надо бы конечно там сделать все валидным, но сегодня меня уже от этого тошнит
а json_decode тоже требует чистоты, поэтому сделал с применением старой библиотеки jQuery
 
Сверху