Ajax Div обновляется слишком быстро

#php #mysql #ajax #ajaxform

#php #mysql #ajax #ajaxform

Вопрос:

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

Я надеюсь, что это имеет смысл.

Моя проблема в том, что иногда, возможно, 1 раз из 20, div обновляется слишком быстро и не принимает новые данные, если я обновляю страницу, которая там есть, и если я отправляю новую запись, обе записи затем оказываются в списке.

Я думаю, мне просто нужно отложить обновление, но я не знаю как.

Спасибо,

php

 echo '<div id="cuttingListDiv">';
$sql = "SELECT * FROM `cuttingList` WHERE jobRef = '".$_SESSION["jobRef"]."' ORDER BY pieceMaterialName, pieceThickness ASC";
$results = $dbconn->query($sql);
if ($results->num_rows > 0) {
    echo '<h3>Cutting List:</h3>';
    echo '<div align="center">';
    while($row = $results->fetch_assoc()) {
        echo '<br />';
        echo '<div class="row">';
        echo '<div class="col" align="center">';
        echo '<h5>'.$row["pieceMaterialName"] . ' - ' . $row["pieceLength"] . 'amp;nbsp;xamp;nbsp' . $row["pieceWidth"] . 'amp;nbsp;xamp;nbsp' . $row["pieceThickness"] . 'mm</h5>';
        echo '<br />';
        echo '</div>';
        echo '</div>';
    }
    echo '</div>';
}
echo '</div>';
  

ajax скрипт

 session_start();
include '_script_sqlConnection.php';

$pieceLength = strip_tags($_POST['pieceLength']);
$pieceWidth = strip_tags($_POST['pieceWidth']);
$thickness = strip_tags($_POST['thickness']);
$material = strip_tags($_POST['material']);
$materialName = strip_tags($_POST['materialName']);
$sheetID = strip_tags($_POST['sheetID']);

// Swap width amp; length id width bigger
if ($pieceWidth > $pieceLength) {
    $tmpDimm = $pieceLength;
    $pieceLength = $pieceWidth;
    $pieceWidth = $tmpDimm;
}

$sql = "INSERT INTO `cuttingList`(`orderRef`, `pieceMaterialName`, `pieceThickness`, `pieceLength`, `pieceWidth`, `sheetID`, `pieceWeight`, `qty`) VALUES ('".$_SESSION["quoteRef"]."', '".$materialName."', '".$thickness."', '".$pieceLength."', '".$pieceWidth."', '".$sheetID."', '".$pieceWeight."', '1')";
if ($dbconn->query($sql) === FALSE) {
    echo "Error Adding Pieces To Cut List.<br />";
}
  

javascript

 $("#cuttingListForm").submit(function(){
    $.ajax({
        type: "POST",
        url: "_script_ajax_addToCuttingList.php",
        data: $('form.cuttingListForm').serialize(),
        success: function() {
            $("#cuttingListDiv").load(location.href   " #cuttingListDiv");
        }
    }); 
});
  

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

1. Возможно, используйте информацию о коде состояния для ожидания кода ответа перед выполнением загрузки, например: ` $.ajax({ type: «POST», url: «_script_ajax_addToCuttingList.php «, данные: $(‘form.cuttingListForm’).serialize(), код состояния: 200: функция() { $(«#cuttingListDiv»).загрузить (местоположение. href «#cuttingListDiv»); } }); `

Ответ №1:

Используйте JS-функцию setTimeout

 // example of usage for setTimeout: 
setTimeout( function(){
$("#cuttingListDiv").load(location.href   " #cuttingListDiv");
}, 2000 ); 
  

В примере у вас есть 2000 миллисекунд на 2-секундное ожидание, прежде чем запустить вызов.

Ответ №2:

Спасибо за помощь, но я пошел другим путем, поскольку у меня все еще были проблемы с обоими этими методами.

В самом верху div, который обновляется, я использовал команду php sleep, чтобы подождать 1 секунду, теперь она работает отлично.

Спасибо,