我试图将2个值互换地插入到数据库中-我的Select元素与name=toctquantsel
和我的Input元素与name=toctquant
。隐藏我的Select元素时,我的Input的值将插入数据库,反之亦然。我仅用我的php代码就可以实现,但是使用AJAX执行此操作时,出现错误消息“ Uncaught mysqli_sql_exception: Column 'toctquant' cannot be null
”。同样,当不使用AJAX时,我没有收到此错误。如何解决此问题,以便无需将数据库列更改为NULL即可将值插入数据库?
这是包含两个元素的HTML代码:
<form method="post" action="tocarthand.php?strid=<?php echo $prodtab->strid; ?>&prodid=<?php echo $prodtab->prodid; ?>" id="toctform">
<input hidden name="toctquantsel">
<select name="toctquantsel" id="quantsel">
<?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 hidden name="toctquant">
<input type="text" name="toctquant" id="inphid">
<button type="submit" name="tocartbut" id="tocartbut">Add to Cart</button>
<div class="excquant"></div>
</form>
这是jQuery代码,用于隐藏Select元素并使Input元素可见:
$(function(){
$(document).on("change", "#quantsel", function(){
if($(this).val() == "11") {
$("#inphid").show().focus();
$("#quantsel").hide();
$("#quantsel").prop('disabled', true);
}
});
});
这是将值插入数据库的AJAX代码:
$(function(){
$(document).on("submit", "#toctform", function(){
event.preventDefault();
var selectValue = $('#quantsel').val();
var inputValue = $('#inphid').val();
var strid = '<?php echo $prodtab->strid; ?>';
var prodid = '<?php echo $prodtab->prodid; ?>';
$.ajax({
type: 'POST',
url: "tocarthand.php?strid="+strid+"&prodid="+prodid,
data: {selectValueBox: selectValue, inputValueBox: inputValue},
success: function(data){
alert("Data Save: " + data);
}
});
});
});
答案 0 :(得分:0)
正常提交表单后,表单字段将放置在$_POST['toctquantsel
] and
$ _ POST ['toctquant']`中。在您的AJAX通话中,您已经
data: {selectValueBox: selectValue, inputValueBox: inputValue},
使用AJAX时,发送到PHP的参数名称来自data:
对象,而不是表单字段的名称。因此,这些字段将位于$_POST['selectValueBox']
和$_POST['inputValueBox']
中。为了使您的AJAX代码与服务器上的相同PHP代码一起使用,您需要将其更改为:
data: {toctquantsel: selectValue, toctquant: inputValue},