Сбой Jquery Ajax… случайным образом завершается успешно

#javascript #php #jquery #ajax

#javascript #php #jquery #ajax

Вопрос:

Вот моя проблема:
я пытаюсь выполнить вызов Ajax с помощью jQuery, это вызывает страницу PHP, код выполняется и повторяет OK, если все в порядке, STOP, если нет.
Я не получаю никакого текста обратно (первая проблема), и настоящая проблема заключается в том, что:
ИНОГДА запрос выполняется успешно, но ВСЕГДА возвращает ошибку. (даже если мой sql-запрос на странице php выполняется)

Вот код :

 <script>
$("a.confirm").click(function(event){
    var id = event.target.id;
    $.ajax({
        type    :"POST",
        url     :'./PHP/UTILS/confirm.php',
        data    :{  "id" : id,
                 },
        beforeSend: function(){
            alert("in progress");
        },
        complete: function(){
            alert("done");
        },
        success: function(){
            alert("OK");
        },
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: "   desc   "nError:"   err   "n");
      }
    });
});
</script>
 

Это для ajax, теперь страница, которую он вызывает :

 <?php
include "./functionsExt.php";
$db = connectToDb('mydb');
$id = $_POST['id'];
$mysql = $db->prepare("UPDATE `test` SET `test_date_p` = CURRENT_TIMESTAMP, `test_status` = '2' WHERE `test_id` = '$id'");
if($mysql->execute()){
    echo "OK";
}else{
    echo "STOP";
}
?>
 

Спасибо за помощь

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

1. functionsExt.php находится в той же папке, что и confirm.php , верно?

2. CURRENT_TIMESTAMP . NOW() Поэтому вы получаете остановку в своем ответе. Поскольку запрос сам по себе завершается успешно success , вызывается.

3. ну, functionsExt.php НАХОДИТСЯ в той же папке, что и confirm.php … я уже проверил это … 🙁

4. иногда выполняется запрос MYSQL … и CURRENT_TIMESTAMP работает нормально, он записывает в БД текущий TS … я не могу получить «ответ» обратно

5. я использую FireBug, и профилировщик выдает мне это в качестве ответа: Object { readyState=0, status= 0, statusText=»ошибка», плюс…} Подробности: ошибка Ошибка: (ничего!) НО запрос mysql РАБОТАЛ НОРМАЛЬНО (на этот раз … иногда это не работает … idk почему ^^) теперь я попробовал еще раз, и запрос mysql не сработал… :/

Ответ №1:

я хотел бы предложить вам попробовать это после удаления запятой в данных после ‘id’.

И я, пожалуйста, упомяну следующее :

  1. повторите переменную post и проверьте ответ.
  2. затем повторите то, что вы хотите, и проверьте, приходит ли оно в ответ или нет
  3. лучший способ записать успех и неудачу
     success:   function(data)
    {    
    alert(data);
    }
    failure : function(){
    alert(failed);
    }
     

В конечном итоге он предупредит вас о данных, которые вы получаете в ответ. Так что это хорошо для целей тестирования.

надеюсь, это поможет 🙂

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

1. спасибо за ваш ответ … я удалил запятую в данных … я отредактировал успех, как и вы… но, похоже, он не проходит часть успеха … ничего не отображается … я получаю «полное оповещение» и журнал консоли (так что это снова «ошибка» …) : (интересная вещь в этом заключается в том, что ИНОГДА (idk, когда или почему) выполняется запрос mysql! теперь я отредактировал код, как вы показали, я попробовал и не сработал, но я уверен, что если я попробую еще несколько раз, он сработает один раз (но все равно выдаст мне журнал ошибок!)… а затем снова не работает некоторое время … :'(

2. вы пробовали повторить переменную post. вы получаете переменную в своем php-файле?

3. просто напишите success и failure и прокомментируйте результат 🙂

4. @user3774191 отметьте мой ответ как принятый.: D Тогда я был бы рад предоставить вам еще несколько идей о ваших запросах: P

Ответ №2:

я думаю, что нашел кое-что интересное… я попытался повторить сообщение… Сообщение хорошо отправлено в файл php,

Но я заметил, что :

если я добавлю event.preventDefault(); в моем коде jquery у меня отображается сообщение post echo «ok» в предупреждении (думаю, это предупреждение об успешном завершении, потому что на этот раз у меня нет сообщения журнала …)

я попробую еще раз… (если это работает так, мне нужно найти способ повторно включить функцию щелчка по ссылке по умолчанию, мне нужно обновить страницу… содержимое страницы не совпадает после вызова ajax …)

попробовал еще раз, и, похоже, теперь это работает … но я не закрываю тему, потому что сейчас мне нужно добавить еще несколько запросов в мой php-файл … и мне все еще нужен способ обновить страницу после выполнения… есть идеи?

(спасибо, стаки, ваш совет, похоже, решил «основную» проблему: P)