我正在尝试使用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();
答案 0 :(得分:0)
您选择的错字有name=toctquant
,但<input type="text" name="toctquant">
有相同的名字,它们会覆盖之前的选择。更改其他名称。