@semki096

Ajax — использование done или suссess?

Не могу понять. Допустим такая ситуация
$.ajax({
                            url: "node"
                            }).done(function(data){
$.ajax({
                            url: "node2"
                            }).done(function(data){
$.ajax({
                            url: "node3"
...

В третьей функции мы не можем использовать данные первой? И как вообще правильно строить такие вещи? C suссess ?
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
В третьей функции мы не можем использовать данные первой?

Сможете, если будете объявлять переменные в глобал, например a = 0;

Но хочу заметить, сама логика хромает, зачем долбить три запроса (в случае успешного ответа)? Не проще ли выполнить один запрос, а выполнение условия предоставить серверу?

Небольшой пример кода, который иногда использую:
// где-то в одной далекой функции или событии собираю данные для запроса
		var Id = '127';
		var Name = 'Test';

		var data = JSON.stringify({
			Type:'Save',
			Data: {
				Id:Id,
				Name:Name
			}
		}); // собираю JSON который будет отправлен, соотвественно можно отослать и не JSON

		var s = {
			type:'POST',
			url:'conn.php',
			data:data,
			dataType:'json',
			parent: 'thisFunction'
		}; // подготавливаю данные для функции отправки

		SendData(s); // вызываю саму функцию отправки


/////////////////////////////


	function SendData(s) {
		$.ajax({
			type: s.type,
			url: s.url,
			data: s.data,
			cache: false,
			dataType: s.dataType,
			timeout: 15000,
			success: function(r) {
				SendSuccess(r, s); // успех, шлем полученный ответ
			},
			error: function(jqXHR, textStatus, errorThrown) {
				SendError(s); // ошибка, в SendError можно так же передать состояние ошибки, например SendError(s, textStatus)
			}
		});
	}

	function SendSuccess(r, s) {
		if (s.parent == 'thisFunction') {
			// вызываем необходимую функцию или событие, можем передать ответ r
		}
	}

	function SendError(s) {
		if (s.parent == 'thisFunction') {
			// можем передать функции состояние ошибки, если логика работы вызвавшей или принимающей функции будет ожидать завершения какого-либо действия
		}
	}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы