Ajax-вызов PHP-скрипта, возвращающий статус 0 после двойного обновления

#php #jquery #ajax

#php #jquery ( jquery ) #аякс

Вопрос:

У меня была простая форма, которая использовала jQuery AJAX для вызова PHP-скрипта и выполнения некоторой работы. Этот код работал должным образом более 2 лет, а затем внезапно перестал работать — и имеет какое-то странное поведение, у меня возникли проблемы с отладкой.

Вот HTML-код:

   <div class="form-group">
    <label for="commenter-name" class="col-sm-3">Name</label>
    <div class="col-sm-9">
      <input type="text" class="form-control" name="commenter-name" id="commenter-name" placeholder="Enter Name" value="" >
    </div>
  </div>
  <div class="form-group">
    <label for="commenter-comment" class="col-sm-3">Comment</label>
    <div class="col-sm-9">
      <textarea class="form-control" rows="3" name="commenter-comment" id="commenter-comment" placeholder="Enter Comment"></textarea>
    </div>
  </div>
  <div class="clear"></div>
  <div class="form-group custom-form">
    <div class="col-sm-3"></div>
    <div class="col-sm-9">
      <input id="submit-comment" type="button" class="btn btn-success" value="Submit">
    </div>
  </div>
 

Вот код JS (с использованием jQuery 1.8.3):

 $("#submit-comment").click(function(event) {
      $.ajax({
        type: "POST",
          url: "_code/ProcessPoll.php",
          data: { comment : comment,  name : name, commenter_position : commenter_position }
      })
});
 

Вот PHP-код:

 if ($_POST["comment"])
{
        //log results of the poll
        $log = new PollsLogging($_POST["name"], $_POST["comment"], "comment", "comment", $_POST["commenter_position"]);
        $log->WriteToFile();
}
 

Этот код эффективно работал более 2 лет, и теперь это поведение:

  1. Введите информацию в поля текстового поля и нажмите кнопку отправки
  2. Запускается событие click, а затем выполняется вызов jQuery AJAX, но не возвращает завершение, успех или сбой (я использую отладчик в Chrome)
  3. Затем я обновляю страницу и получаю статус 0 в ошибке от AJAX (у меня здесь нет отладки, но я просто использовал это, чтобы разобраться: ошибка: функция (jqXHR, textStatus, errorThrown) {alert(jqXHR.status)}

Могло ли что-то измениться в разных версиях всех основных браузеров, чтобы это перестало работать? Я что-то явно упускаю из виду? Я прочитал несколько вещей о том, что вызов AJAX может никогда не завершиться, но я не уверен, как с этим справиться … тем более, что я не внес никаких изменений в код… У меня также есть несколько других небольших программ, которые похожи, и они также перестали работать и ведут себя аналогичным образом!

Любая помощь / руководство приветствуется.

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

1. Попробуйте удалить _ из URL-адреса

2. Только что попробовал. То же поведение.

3. Используете ли вы jQuery CDN или разместили свой файл jQuery локально? Попробуйте использовать более старую версию jQuery, чтобы узнать, не связана ли проблема с самим jQuery.

4. Я перепробовал несколько версий jQuery (начиная с версии 1.3.0 и заканчивая последней). Пока не повезло. Я даже сократил код, чтобы просто запускать вызов AJAX при загрузке страницы и вызывать PHP-скрипт, который просто выполняет sleep(1000); — и все равно получает то же поведение.

5. Я также пробовал это на нескольких серверах…

Ответ №1:

Мне жаль, что я не могу комментировать из-за моей плохой репутации, поэтому я публикую это как ответ.

На самом деле, невозможно предоставить вам ответ, нам не хватает информации. Я не вижу никаких проблем в представленном вами коде.

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