将Select-Option值插入为“ 0”而不是实际值

时间:2019-05-27 22:34:52

标签: php jquery ajax

我正在尝试使用Ajax将选择选项值插入数据库中,但是它将继续向数据库中插入“ 0”而不是实际值,否则它将返回“ null”值。我能够在没有Ajax代码的情况下成功插入选择选项值。但是我能够使用带有Ajax代码的文本输入字段来插入值。我的选择和文本输入的name值是相同的(因为它们都应将相同的数据插入数据库)。隐藏选择选项时,文本输入会将其值插入数据库,反之亦然。所以我的主要问题是,如何获取要插入数据库的select-option的实际值(因为它所插入的全部为“ 0”或返回的错误为“ null”)?

这是表单的html,其中包含带有name="toctquant"属性的select-option和text输入字段:

<form method="post" action="tocarthand.php?strid=<?php echo $prodtab->strid; ?>&prodid=<?php echo $prodtab->prodid; ?>" id="toctform">
    <select name="toctquant" id="quantsel" class="qinp">
        <?php $q = $prodtab->quant; ?>
        <?php for ($q = 1; $q <= 10; $q++): ?>
            <option value="<?php echo $q; ?>"><?php echo $q; ?></option>
        <?php endfor; ?>
        <?php if ($q > 10): ?>
            <option value="<?php echo $q; ?>"><?php echo $q; ?>+</option>
        <?php endif; ?>
    </select>
    <input type="text" name="toctquant" class="inphid qinp">
    <button type="submit" name="tocartbut" id="tocartbut">Add to Cart</button>
</form>
<div id="result"></div>

这是我遇到的Ajax代码。它将仅提交用于文本输入的值,而不提交选择选项的值:

$("#toctform").submit(function(e) {
    var data = $("#toctform").serialize();
    $.ajax({
        data: data,
        type: "post",
        url: "tocarthand.php",
        success: function(data){
            alert("Data Save: " + data);
        }
    });
});

编辑:文件tocarthand.php随附的php代码

$strid = (int)$_GET['strid'];
$prodid = (int)$_GET['prodid'];
$toctprodid = (int)$_GET['prodid'];
$toctuserid = $_SESSION['userid'];
$toctquant = $_POST['toctquant'];
$stmt = $conn->prepare("INSERT INTO tocart (toctprodid, toctuserid, toctquant) VALUES (?, ?, ?)");
$stmt->bind_param("iii", $toctprodid, $toctuserid, $toctquant);
$stmt->execute();
$stmt->close();
header('Location: itempage.php?strid='.$strid.'&prodid='.$prodid.'&insert=success');
$conn->close();

1 个答案:

答案 0 :(得分:0)

您选择的错字有name=toctquant,但<input type="text" name="toctquant">相同的名字,它们会覆盖之前的选择。更改其他名称。

Is it OK to have multiple HTML forms with the same name?