Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2018, 12:29
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Ajax получение сообщение от сервера потом перезагрузка
Доброго дня. Полдня вожусь и не могу разобраться.
Суть такая. Ajax отправляет несколько значений на сервер. Сервер взаимодействует с БД и выдает ответ.
Ajax должен принять ответ , выдать алерт, что все хорошо, и после нажатия кнопки Ок, перезагрузить страницу.
Почти 100% нажатия кнопки скрипт отрабатывает полностью, но
Примерно 50% выскакивает alert("Ошибка выполнения"), хотя скрипт все отрабатывает правильно.
Периодически страница перезагружается прежде появления сообщения.
Если быстро нажимаешь кнопку- видимо сервер не успевает отправить ответ и снова сообщение с ошибкой, хотя обработчик срабатывает.
Подскажите как сделать правильно? Пришел положительный ответ, только потом страница перезагрузилась. Или еще как нибудь.


function send_market_archiv(idorder,idmarket,idarchive,iduser){
      $.ajax({
	    type: "POST",
	    url: "send_market_archive.php",
	    data: ("idorder="+idorder+"&idmarket="+idmarket+"&idarchive="+idarchive+"&iduser="+iduser+""), 
	    dataType: "html",
	    cashe: false,
	    success: (function(data) { 
			alert(data);

	    }),
	    error: (function() { 
	     	alert("Ошибка выполнения");
	    location.reload();
	     }),
	 });
	 location.reload();
};


send_market_archive.php
<?php
if ($_POST){
$idorder = $_POST['idorder'];
$idmarket = $_POST['idmarket'];
$idarchive = $_POST['idarchive'];
$iduser = $_POST['iduser'];
.......
работа с БД
......
echo "Заказ успешно перенесен в ваш архив";
exit(); //завершаем работу скрипта
}
?>
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2018, 13:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

location.reload(); перенести в success: (function(data) {} и выполнять после нажатия вашей кнопки.
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2018, 14:29
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Сообщение от laimas Посмотреть сообщение
location.reload(); перенести в success: (function(data) {} и выполнять после нажатия вашей кнопки.
Спасибо за ответ.

success: (function(data) { 
			alert(data);
			location.reload();
	    }),
	    error: (function() { 
	     	alert("Ошибка выполнения");
	    location.reload();
	     }),
	 });


теперь при первом нажатии- ошибка, перезагрузка
второе нажатие - успешно

5 раз повторил, все как я написал
Ответить с цитированием
  #4 (permalink)  
Старый 26.10.2018, 14:31
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Тоже самое, просто показываю что можно написать короче:
// все ваши переменные добавляете в объект
var object = {idorder: idorder, idmarket: idmarket, idarchive: idarchive, iduser: iduser};
//передаете его в вашу функцию
function send_market_archiv(object){
    $.post('send_market_archive.php', {object})
    .done(function(data) {
        alert(data);
		location.reload();
    })
    .fail(function() {
       alert('Ошибка выполнения');
	   location.reload();
    });
}

Потом на сервере принимате ваш объект:
<?php

$object = $_POST['object']; 

//и для базы используете так
$object['idorder']; // и т.д.
?>
Ответить с цитированием
  #5 (permalink)  
Старый 26.10.2018, 14:32
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

убрал перезагрузку из error/ вроде заработало. потестирую еще
Ответить с цитированием
  #6 (permalink)  
Старый 26.10.2018, 14:34
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

А как функцию send_market_archiv вообще вызываете?
Ответить с цитированием
  #7 (permalink)  
Старый 26.10.2018, 14:34
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Сообщение от Artur_Hopf
Тоже самое, просто показываю что можно написать короче:
спасибо за совет. Очень удобно. Переделаю сразу , чтобы на будущее сохранить!
Ответить с цитированием
  #8 (permalink)  
Старый 26.10.2018, 14:35
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Сообщение от Artur_Hopf Посмотреть сообщение
А как функцию send_market_archiv вообще вызываете?
echo '<input type="button" value="в архив" onclick="javascript:send_market_archiv('.$id_order_items.','.$idpurch.','.$mymarket_archiv.','.$iduser.');">';
Ответить с цитированием
  #9 (permalink)  
Старый 26.10.2018, 14:41
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

В php объект немного по другому создается
$object = (object) [
    'idorder' => $id_order_items,
    'idmarket' => $idpurch,
// и т.д.
  ];

И onclick можно записать просто:
onclick="send_market_archiv('.$id_order_items.','. $idpurch.','.$mymarket_archiv.','.$iduser.')"

Последний раз редактировалось Artur_Hopf, 26.10.2018 в 15:42.
Ответить с цитированием
  #10 (permalink)  
Старый 26.10.2018, 14:55
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Сообщение от Artur_Hopf Посмотреть сообщение
В php объект немного по другому создается
<?php
$object = (object) [
    'idorder' => $id_order_items,
    'idmarket' => $idpurch,
// и т.д.
  ];
?>

И onclick можно записать просто:
onclick="send_market_archiv('.$id_order_items.','. $idpurch.','.$mymarket_archiv.','.$iduser.')"
Спасибо. Мне как новичку- полезная инфа!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват Ajax ответов от сервера shock-in AJAX и COMET 6 27.01.2011 16:49
Получение ответа сервера раньше браузера. alexandre AJAX и COMET 4 13.11.2010 15:57
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 23:54
Переодическое получение ответа от сервера demoniqus AJAX и COMET 6 22.06.2010 16:09
Ajax и получение ответа до полной загрузки страницы Suspended jQuery 3 16.11.2008 14:57