我正在用 ajax 发送数据。如何重置数据发送过程?

I am sending a data with ajax. How can I reset the data sending process?

当我 select 一个购买了产品的帐户时,我会弹出一个选项显示它是什么产品,但是如果我们 select 一个购买了另一个产品的帐户产品,这个选项是第二次来了。

我的脚本代码

$("select.account").on('change', function() {

    var accId = $(this).children("option:selected").val();
    
    console.log(accId);

    $.ajax({

        type: 'POST',
        url: 'netting/order-ajax.php',
        data: {
            'accId': accId
        },
        success: function(data) {
            
            if (data != "FALSE") {
                $('#accform').after(data);
                
            } else {
                $('#productform').hide();
            } 
        }
    })
})

image

我的订单-ajax.php

if (isset($_POST['accId'])) {

$sql = $db->qSql("SELECT * FROM sales INNER JOIN account ON sales.accId = account.accId INNER JOIN product ON sales.productId = product.productId WHERE sales.accId = '{$_POST['accId']}'");

if ($sql->rowCount() > 0) { ?>

    <div id="productform" class="form-group">
        <label for="recipient-name" class="col-form-label">Ürün & Hizmet</label>
        <select class="form-control account" required name="accId">
            <option value="">Ürün & Hizmet seçiniz...</option>
            <?php
            $sql = $db->read("product", [
                "columnsName" => "productId",
                "columnsSort" => "DESC"
            ]);
            while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {   ?>
                <option value="<?= $row['productId'] ?>"><?= $row['productTitle'] ?></option>
            <?php } ?>
        </select>
    </div>

.after(data) 不断在表单末尾添加更多内容。

相反,创建一个特定的 div 或您想要放置此内容的内容,然后使用 .html(data) 写入其中。这将在您每次 运行 时覆盖内容,而不是将其附加到之前添加的内容。

参考文献: