Файл Ajax прекращает выполнение

#php #ajax

#php #ajax

Вопрос:

У меня есть этот фрагмент кода AJAX, который работает корректно в том смысле, что он обновляет мою базу данных, только после того, как это сделано, остальная часть моего кода не выполняется…

 $(".getPoint").click(function()
{        
   var theid = $(this).attr("id");
   var onlyID = theid.split("_");
   var onlyID = onlyID[1];
   var credoff = parseInt($(this).children('input.credoff:hidden').val());

    $.ajax({            
      url: 'do.php',
      type: 'POST',          
      data: "userID="   onlyID   "amp;credoff="   credoff,
      success: function(data) {
          if(data != "success1" amp;amp; data != "success5") {
               $("#"   theid).text(data);  
          }else{

              $("#thediv_"   onlyID).fadeOut("slow");
              $('#creditsBalance').fadeOut("slow");
              newbalance = parseInt($('#creditsBalance').text());

          if(data != "success5") { 
               newbalance = newbalance credoff;
              }else{
                newbalance = newbalance 5;
              }
          alert ('hi');

              $('#creditsBalance').text(newbalance);
              $('#creditsBalance').fadeIn("slow");
              $("#"   theid).text("Done"); 
          }
      },
      beforeSend: function()
      {
            $("#"   theid).text("Working...");                  
      },
      error: function()
      {           
        $("#"   theid).text("Failed...Click to Retry");           
      }          
    });
});
  

Строка

 if(data != "success5") { 
    newbalance = newbalance credoff;
}else{
    newbalance = newbalance 5;
}
alert ('hi');
  

Обновляет мою базу данных, но затем я не получаю предупреждение, достаточно ли этого кода, чтобы кто-нибудь увидел, где я ошибаюсь?

Комментарии:

1. Запускали ли вы консоль JavaScript (например, Firebug) в браузере и проверяли, есть ли какие-либо ошибки скрипта?

2. @Джефф, да, у меня только все работает нормально…

Ответ №1:

Возможно, ваш сервер добавляет новые строки или другие интервалы, которые затрудняют сравнение строк, обязательно обрезайте пробелы перед выполнением таких операций:

 success: function(data) {
  data = data.trim();
  

Ответ №2:

если вы хотите отправить оповещение об успешном выполнении, измените свой фрагмент следующим образом

 if(data != "success5") { 
    newbalance = newbalance credoff;
}else{
    newbalance = newbalance 5;
    alert ('hi');
}
  

таким образом, если это ‘success5’, вы получите предупреждение

Комментарии:

1. Я пробовал это, и это работает, но мне нужно добавить код … $ (‘#creditsBalance’).text(newbalance); $(‘#creditsBalance’).fadeIn («медленно»); $ («#» идентификатор).text («Готово»); … который затем должен обновить div на моей странице новым значением…

2. просто добавьте этот код вместо alert(), предупреждение было там для целей отладки, верно? так что просто замените его своим кодом

Ответ №3:

Эта строка вообще не обновляет базу данных. php-код, который обновляет базу данных, уже выполнен. Вам нужно будет выяснить, где достигается точка, с которой начинается if. Если это не так, проблема может заключаться в коде php (после части, в которой обновляется база данных) или в коде javascript, либо в указании правильного OnSuccess обработчика событий для запроса AJAX, либо в самом коде в этом обработчике событий.

В этом случае вполне может быть, что newbalance не определен внутри обработчика событий, поэтому выполнение строки

 newbalance = newbalance   whatever;
  

вызовет ошибку.

Проще всего попробовать: поставить alert('yoyoyo'); в верхней части обработчика успеха. Если вы не получаете это сообщение, событие не вызывается.

Убедитесь, что вы тестируете с помощью FireBug или аналогичного инструмента, чтобы проверить, не получаете ли вы каких-либо синтаксических ошибок или других ошибок. Если вы этого не сделаете и не получите сообщение, обработчик события не вызывается, и проблема, вероятно, кроется в коде сервера.

Комментарии:

1. Я понимаю, что эта строка не обновляет мой php, я попробую добавить предупреждение, спасибо