AJAX PHP代码插入NULL且不向数据库输入值

时间:2019-05-28 18:49:30

标签: php jquery ajax database mysqli

我试图将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);
            }
        });
    });
});

1 个答案:

答案 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},