@kr_ilya

Как правильно остановить выполнение скрипта jQuery?

Имеется Ajax запрос. Нужно, чтобы если 1 раз обратились к бд, а в ней нет записей, то в дальнейшем не пускать даже к обработчику.
$(document).ready(function(){
    
    var inProgress = false;
    var startFrom = 5;
    var stop = false;
      $('.more').click(function(){
          if(stop == false){
              if (inProgress == false){
              $.ajax({
                  url: "/api/autoload.php",
                  method: "POST",
                  data: {"startFrom" : startFrom},
                  dataType : 'html',
                  beforeSend: function(){
                      inProgress = true;
                  }   
              })
              .done(function(html, error){
              	if (error == '1'){
                      $('#projects').append(html);
                    
                    
                      inProgress = false;
                      startFrom += 10;
                  }else{stop = true;};
					});
          }else{$('#projects').append('Все!!!'); stop = true;};
          }else{$('#projects').append('Все!!!'); stop = true;};
             
      });
          
  
});

В обработчике написал это
$stat = $db->fetch_assoc_array($asql, $aarr);
$error = '0';
if(!empty($stat)){  //если есть записи, продолжаем
$html = (' какой-то код ');
echo $html; //возвращаем
}else{echo $error = 1; return;} //иначе пишем ошибку.


Сейчас выводит 1. Что не так и как сделать правильно?
  • Вопрос задан
  • 961 просмотр
Пригласить эксперта
Ответы на вопрос 2
BRAGA96
@BRAGA96
Там, где if (true) ставите своё условие при котором запрос не будет выполнятся
$.ajax({
	url: 'https://jsonplaceholder.typicode.com/users',
	method: 'GET',
	dataType: 'json',
	contentType: 'application/javascript',
	beforeSend: function(xhr) {
		if (true) {
			xhr.abort();
		}
	}
});
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Код echo $error = 1; выводит 1. А вы чего ожидали?

Возможно более правильным будет сформировать массив с ответом

if ($newBalance !== false) {
            $responseData = [
                'status' => 'ok',
                'msg' => 'Баланс успешно пополнен на ' . $amount,
                'newBalance' => $newBalance,
            ];
        } else {
            $responseData = [
                'status' => 'error',
                'msg' => 'Ошибка при пополнении баланса',
                'newBalance' => '',
            ];
        }

отдать его в виде json:
header('Content-Type: application/json; charset=utf-8');
        echo json_encode($responseData, JSON_UNESCAPED_UNICODE);
        exit;

А на клиенте проверять как-то так:

if (data.status === 'error') {
   showPopup(data.msg)
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
04 мая 2024, в 06:10
4000 руб./за проект
04 мая 2024, в 05:49
10000 руб./за проект
04 мая 2024, в 03:57
10000 руб./за проект