【发布时间】:2019-10-13 10:39:42
【问题描述】:
我正在尝试使用 Ajax 将选择选项值插入到我的数据库中,但它会继续向数据库中插入“0”而不是实际值,否则它将返回为“null”值。但是,我能够在没有 Ajax 代码的情况下成功插入选择选项值。但是我可以使用带有 Ajax 代码的文本输入字段来插入值。我的选择和文本输入的name 值是相同的(因为它们都应该将相同的数据插入数据库)。隐藏选择 - 选项时,文本输入将将其值插入数据库并使Visea。所以我的主要问题是,如何获取要插入数据库的选择选项的实际值(因为它插入的都是“0”或返回错误“null”)?
这是表单的 html,其中包括带有 name="toctquant" 属性的选择选项和文本输入字段:
<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();
【问题讨论】:
-
问题出在 php 上(很可能),所以你需要包含它
-
@tim ok 包含 php 文件和代码
-
你从 ajax 发帖,所以它在 php 中的 $_POST 不是 $_GET
-
@tim 这两个
(int)$_GET['strid']和(int)$_GET['prodid']不用于发布到数据库中。它们只是来自要插入到header()的链接地址的 $_GET 变量。 -
$toctprodid = (int)$_GET['prodid'];但是ajax调用的url里面没有prodid=