Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $.ajax(), запрос отправлен, но обработчик выполняет error (https://javascript.ru/forum/jquery/21953-%24-ajax-zapros-otpravlen-no-obrabotchik-vypolnyaet-error.html)

SkaN 30.09.2011 16:40

$.ajax(), запрос отправлен, но обработчик выполняет error
 
Есть стандартный ajax запрос такого сожержания:
$.ajax({
	url: "index.php?id=ajax&action=vote",
	type: "POST",
	data: {voice: voice, article: article},
	dataType: "script",
	beforeSend: function() {
		$("#voting").html('<span><img src="styles/img/wait.gif">&nbspПодождите, отправка голоса...</span>');
		$("#voting").fadeIn('slow');
	},
	success: function() {
		loadRating(article);
		switch (stat) {
			case 'ok':
				$("<div />").text("Спасибо, ваш голос принят!").addClass("no_error").replaceAll("#voting > *");
				break;
			case 'voted':
				$("<div />").text("Вы уже голосовали").addClass("error").replaceAll("#voting > *");
				break;
			case 'ok':
				$("<div />").text("Ошибка отправки голоса. Обратитесь к администратору.").addClass("error").replaceAll("#voting > *");
				break;
		}
		$("#voting").fadeIn('slow');
		setTimeout("$('#voting').fadeOut('slow')", 3000);
	},
	error: function() {
		$("<div />").text("Невозможно отослать голос на сервер. Обратитесь к администратору.").addClass("error").replaceAll("#voting > *");
		$("#voting").fadeIn('slow');
		setTimeout("$('#voting').fadeOut('slow')", 3000);
	}
});

Запрос точно отправляется, потому что количество голосов увеличивается, но выполняется обработчик error. Не могу понять причину

walik 30.09.2011 16:50

Скорее всего тип ответа не соответствует тому который указан в dataType.
В error посмотрите какая ошибка вылетает:
error: function(XMLHttpRequest, textStatus, errorThrown) {
   alert(textStatus);
}

SkaN 30.09.2011 16:54

должен соответствовать, там возвращается var stat = 'somevalue', данном случае var stat = 'ok'
в другом аналогичном скрипте таких проблем не было, хотя абсолютно такая же система

SkaN 30.09.2011 16:56

ой, оказалось в скрипте на сервере ошибка, потому не возвращалось то, что нужно


Часовой пояс GMT +3, время: 05:56.