【问题标题】:Ajax Div Refreshing Too FastAjax Div 刷新太快
【发布时间】:2019-03-28 16:17:40
【问题描述】:

我有一个通过 ajax 发布到脚本的表单,脚本将表单数据插入数据库并使用 ajax 刷新原始页面上的 div,然后显示表单以及记录列表数据库(来自表单输入)

我希望这是有道理的。

我的问题是,有时,可能 20 次中的 1 次,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"] . '&nbsp;x&nbsp' . $row["pieceWidth"] . '&nbsp;x&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 & 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");
        }
    }); 
});

【问题讨论】:

  • 可能使用状态代码信息等待响应代码,然后再执行加载,例如:` $.ajax({ type: "POST", url: "_script_ajax_addToCuttingList.php", data: $(' form.cuttingListForm').serialize(), statusCode: 200: function() { $("#cuttingListDiv").load(location.href + "#cuttingListDiv"); } }); `

标签: php mysql ajax ajaxform


【解决方案1】:

使用JS函数setTimeout

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

在示例中,您在触发呼叫之前有 2000 毫秒等待 2 秒。

【讨论】:

    【解决方案2】:

    感谢您的帮助,但我采取了不同的方式,因为这两种方法仍然存在问题。

    在刷新的 div 的最顶部,我使用 php sleep 命令等待 1 秒,现在它可以正常工作了。

    谢谢,

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2016-10-26
      相关资源
      最近更新 更多