Jump to content
  • 0

Ajax - обработка ответа


rus
 Share

Question

К сути..., есть форма в сплывающем окне, по клику на сабмит, приходит ответ с обработчика в success верно заполнены поля, или нет.

Вопрос: как сделать что бы если ответ верный, то окно закрывалось?

function ajax() { //Ajax отправка формы	var msg = $("#form").serialize();	$.ajax({		type: "POST",		url: "send.php",		data: msg,		success: function(data) {			$("#results").html(data); // основной див в котором находятся элементы с ответом			$('span.error').fadeIn(500); // элемент с ответом ошибок			$('.true').fadeIn(500); // элемент с верным ответом			$('.overlay, .order').hide(5000); // всплывающее окно с формой котоое должно закрыться		},		error:  function(xhr, str){			alert("Возникла ошибка!");		}	});}
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Смотря что у тебя в качестве ответа приходит...

если просто "ok" то через условие проверяй "ok" или не "ok"))

если html то в серверном скрипте добавь скрытый тег в callback - "ok"/ true и т.д.  после вставки - проверяй

 

а ещё лучше - json. не вижу конкретного примера, поэтому гадаю )

 

если - окно popup, то точно также. закрывать window.close()

 

может я что то не так понял, но по моему тут просто всё

Edited by Николя223
  • Like 1
Link to comment
Share on other sites

  • 0

ребят, спасибо что откликнулись, ответ приходит в виде html.

Николя223, т.е. типа того?

html

<span class="error" data-callback="no">Ошибка, не заполнено поле такое-то...</span><span class="true" data-callback="yes">Сообщение отправлено</span>
function ajax() { //Ajax отправка формы	var msg = $("#form").serialize();	$.ajax({		type: "POST",		url: "send.php",		data: msg,		success: function(data) {			$("#results").html(data);                        if($($(this).attr('data-callback')) = 'no') {			$('.error').fadeIn(500);                        } else if($($(this).attr('data-callback')) = 'yes') {			$('.true').fadeIn(500);			$('.overlay, .order').hide(5000);                        }		},		error:  function(xhr, str){			alert("Возникла ошибка!");		}	});}

типа того что ли?

 

Zverushka, а как тут проверишь, если в msg отсылается сериализованный post?

Link to comment
Share on other sites

  • 0
success: function(data) {			$("#results").html(data);                        if($($(this).attr('data-callback')) = 'no') {			$('.error').fadeIn(500);                        } else if($($(this).attr('data-callback')) = 'yes') {			$('.true').fadeIn(500);			$('.overlay, .order').hide(5000);                        }		}

1. В условиях сравнение нужно ==, а не присваивание =

2. лишний вызов $() в условиях

3. вместо this юзаем полученные данные data

 if($(data).attr('data-callback') == 'no') {			$('.error').fadeIn(500); } else if($(data).attr('data-callback') == 'yes') {			$('.true').fadeIn(500);			$('.overlay, .order').hide(5000); }

c json еще проще:

//ответ в виде://{success: false, message:"Ошибка, не заполнено поле такое-то..."}//{success: true, message:"Сообщение отправлено"}function ajax() { //Ajax отправка формы	var msg = $("#form").serialize();	$.ajax({		type: "POST",		url: "send.php",		data: msg,                dataType: 'json',		success: function(data) {   $("#results").text(data.message); // основной див в котором находятся элементы с ответом   $('.overlay, .order').hide(5000); // всплывающее окно с формой котоое должно закрыться             if(!data.success){	$('span.error').fadeIn(500); // элемент с ответом ошибок   }else{	$('.true').fadeIn(500); // элемент с верным ответом   }	   },		error:  function(xhr, str){			alert("Возникла ошибка!");		}	});}
Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0

wwt, спасибо за разъяснения, но есть вопрос по json: вверху в закомментированном куске ты привел пример ответа true и false, а как функция поймет что там правда, а что ложь, если ответ приходит в html виде?

проверка ведь выполняется средствами php и возвращает только html кусок с сформированным ответом.

Link to comment
Share on other sites

  • 0

wwt, спасибо за разъяснения, но есть вопрос по json: вверху в закомментированном куске ты привел пример ответа true и false, а как функция поймет что там правда, а что ложь, если ответ приходит в html виде?

проверка ведь выполняется средствами php и возвращает только html кусок с сформированным ответом.

 

ну если хочется использовать json значит php  должен возвращать json строку а не html ))

<?php...echo '{success: false, message: "text"}';...
  • Like 1
Link to comment
Share on other sites

  • 0
<?php...echo '{success: false, message: "text"}';...

 о... у меня пробел оказывается есть) это тоже что и json_encode ?

upd) понял - запутался в языках) обычный ассоциативный массив

Edited by Николя223
Link to comment
Share on other sites

  • 0

меня всегда удивляло: php'шники пишут mvc на сервере, а на клиенте абру-кадабру делают. И типа это нормально, так и должно быть  :)

 

 

php

<?php$messages = array( 'true' => '<true msg>', 'false' => '<false msg>' );$status = true;$result = array( 'status' => $status, 'messages' => $messages ); // правда, не понятно зачем отправлять все сообщения...echo json_encode( $result );?>

js

success: function(data) {    var status = data.status;    var messages = data.status;        $("#results").html( messages[status] );    $('.error')[ !status ? 'fadeIn' : 'fadeOut' ]();    $('.true')[ status ? 'fadeIn' : 'fadeOut' ]();    $('.overlay, .order')[ status ? 'show' : 'hide' ]();},

разумеется писал в форум и не проверял

Edited by nerv
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy