@bighoc
php/javascript developer

Событие на onSend jquery ajax?

скажем идёт мой код

$.ajax({
  type: "POST",
  url: url,
  data: data,
});
console.log('request was sended');


Могу я быть уверен что консоль лог сработает после того как запрос будет отправлен? Меня не интересует ответ, нужно быть увереным именно в том что запрос был отправлен.
  • Вопрос задан
  • 490 просмотров
Решения вопроса 1
CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult
Лог сработает до того как запрос будет отпрпавлен или во время отправки. Т.к. запрос асинхронный. Т.е. либо делать синхронный запрос (потеряешь в скорости на клиенте если запросов будет много/несколько) либо делать вот так:

$.ajax({
		url: 'URL',
		dataType: "JSON",
		method: "POST",
		data: {
			var1: arg1,
		},
		statusCode: {
			200: function() {
				if (console!==undefined) console.log('Request send but not data not parsed yet!'); // то что тебе надо
			},
			500: function() {
				if (console!==undefined) console.log('Server error 500!');
			},
			404: function() {
				if (console!==undefined) console.log('Server error 404!');
			}
		},									
		success: function(data) {
			if (console!==undefined) console.log(data);
		},
		error: function(v1,v2,v3) {
			if (console!==undefined) console.log(v1,v2,v3);
		}
	});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Вы можете быть уверены, что консоль сработает вообще всегда, если только не будет ошибок выше в коде.
С отправкой запроса, получением ответа на него вызов консоли в вашем коде не связан вообще никак. Вызов метода $.ajax — просто выражение, стоящее перед выражением, в котором вызывается метод console.log. С таким же успехом там могло стоять любое другое выражение.
Любые действия после получения ответа будут выполнены гарантированно после вызова консоли.
Ответ написан
@telray
Не можете.
Если хотите в любой ситуации отловить что ajax отработал, то так.

$.ajax({
  type: "POST",
  url: url,
  data: data,
}).always(function() {
  console.log('request was sended');
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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