使用ajax/Javascript动态验证用户选择

使用ajax/Javascript动态验证用户选择,javascript,php,jquery,ajax,mysqli,Javascript,Php,Jquery,Ajax,Mysqli,请参见下面我的简单html表单。我想让用户从下拉列表中选择产品。然后,继续从下一个下拉列表中选择数量并添加到购物车 问题是:在选择数量时,我希望系统动态地转到数据库php/MYSQL,将数据库数量与所选值进行比较。如果大于以DB为单位的stock value Total value,则应弹出一条类似于警报框的消息并禁用submit按钮,否则应添加到购物车并启用submit按钮 我已经看过很多ajax示例和帮助,但是还没有得到。如有必要,请提供样品/修改 <p>Product Name

请参见下面我的简单html表单。我想让用户从下拉列表中选择产品。然后,继续从下一个下拉列表中选择数量并添加到购物车

问题是:在选择数量时,我希望系统动态地转到数据库php/MYSQL,将数据库数量与所选值进行比较。如果大于以DB为单位的stock value Total value,则应弹出一条类似于警报框的消息并禁用submit按钮,否则应添加到购物车并启用submit按钮

我已经看过很多ajax示例和帮助,但是还没有得到。如有必要,请提供样品/修改

<p>Product Name:<select name="prod_name" size="1">
<option value="Select">Select</option>
<?php
while ($line = mysqli_fetch_array($query, MYSQL_ASSOC)) { 
 ?>
<option value="<?php echo $line['prod_name'];?>"><?php echo $line['prod_name'];?> </option>  
<?php } ?> 

</select></p>
<p>Quantity:<input  type="number" name="qty"  size="30"  required="required"/></p>
<input name="submit" type="submit" value="Add to Cart" /> | <input name="reset" type="reset" value="Cancel" />

因此,您最好使用jQuery。首先要做的是在数量发生变化时触发一些代码

<script>
$( "input[name='qty']" ).change(function() {
    alert( "Handler for .change() called you selected Quantity " + this.value);
});
</script>

首先,您需要获得希望通过ajax发送的值。然后,执行服务器端操作,将值与所选值进行比较。 我这样做是为了向您展示您应该做什么!:

$("#select").change(function() {
    var valueOpt = $("option:selected", this).attr("value");
    $.ajax({
        type: "post",
        url: "YourURL",
        data: {yourParams: valueOpt},
        success: function(data) {
            console.log(data);
        }
    });
});

通过change事件获取该值,然后将其传递到yourParams,顺便说一下,您可以使用php:echo$\u POST['yourParams']检索该值。执行您的请求,现在比较值!:

下面的代码发生在您更改数量值时,它将运行一个ajax调用来检查数量是否大于库存

<p>Product Name:<select name="prod_name" id="prod_name" size="1">
<option value="Select">Select</option>
<?php
while ($line = mysqli_fetch_array($query, MYSQL_ASSOC)) { 
?>
<option value="<?php echo $line['prod_name'];?>">
<?php echo $line['prod_name'];?> </option>  
<?php } ?> 

</select></p>
<p>Quantity:<input  type="number" id="qty" name="qty"  
size="30"  required="required"/></p>
<input name="submit" type="submit" id="btn" value="Add to Cart" /> | 
<input name="reset" type="reset" value="Cancel" />

<script>
$('#qty').change(function(){
var prodname = $(#prod_name).val();
var qty= $(#qty).val();
$.ajax({
    url: 'your_php_',
    data:{prodname: prodname, qty: qty},
    success: function(e){
        if(e == 'true'){
            /*if the quantity is greater than the stock*/
            alert('Your MEssage');
            $('#btn').prop('disabled', true);
        }else{
            $('#btn').prop('disabled', false);
        }
    }
})
});
</script>

您可以执行以下操作:

$('select').on('change', function () { // Better if you put class in your html tags when your using it in either CSS or JS
    $.ajax({
        url: urlToGetTheResultOfMySQL, // this page must have the query to your database that will receive the data in the AJAX POST
        type: 'POST',
        data {
            qty: this.value // you can get this qty value via $_POST['qty']
        },
        success: function(data) {
            if (data == 1) { 
            /* if you prefer that your logic will only return 1 if the 
               quantity exceeds the in one your database, disabled the  
               submit button, but it's much better to remove the input tag  
               and replace it with just a dummy button */
                $('input[type="submit"]').attr('disabled','disabled'); 
            }
        },
    });
});

希望这能有所帮助,请询问我的代码中是否有含糊不清的解释,我还没有测试过,所以请随时询问。

请告知我是aajx的新手,因此我需要更多的解释/帮助。第2行显示错误。另外,url是从数据库中获取总库存的php脚本。我将如何确定产品。e、 g$val=选择产品名称='的库存数量。获取['prod\u name']$conf=mysqli_query$con$val$fetchVal=mysqli_fetch_数组$conf$股票=$fetchVal['prod_name'];请检查我是否在课程中,或者我如何获取此信息检查prodname,您可以从中获取产品名称。你应该把它放到你的php中,在那里你的查询是isPls。我是ajax新手,所以我需要更多的解释/帮助。第2行显示错误。另外,url是从数据库中获取总库存的php脚本。我将如何确定产品。e、 g$val=选择产品名称='的库存数量。获取['prod\u name']$conf=mysqli_query$con$val$fetchVal=mysqli_fetch_数组$conf$股票=$fetchVal['prod_name'];请检查我是否在课程中,或者有什么方法可以做得更好。另外,请注意,这意味着我必须让用户点击,但我认为这不是一个好主意。请帮助。我编辑了上面的代码以包含一个数量,并将其传递给查询所在的php。现在我们已经在表单中传递了产品名称和数量。您需要做的是将产品名称和数量输入php。您的查询应该检查所选产品库存是否少于数量,您可以回显'true'或'false',如果ajax成功,您的php中的结果将检查其是真是假。请原谅我的问题,我尝试过,但仍然没有得到它。这是URL:URL:'confirmStock.php',这是内容:请告诉我我在哪里找不到它。请告诉我对数据库的查询是什么样子的,以及如何发送它?像这样的东西行得通吗?$val=从prod_name='的库存中选择数量。$获取['prod_name']$conf=mysqli_query$con$val$fetchVal=mysqli_fetch_数组$conf$股票=$fetchVal['prod_name'];你能帮我看一下当数量改变时会触发的代码示例吗?顺便说一句,你可能想在这里重新思考一下你的策略。我假设你的目标是防止人们在购物篮中添加大量库存中没有的物品。问题在于,当他们退房时,库存很可能已经发生了变化,用户购买的产品在任何情况下都必须进行修改。在绘制页面之前,可能更容易检查库存值,将下拉列表限制为该数字,以便用户无法选择比库存值更大的数字。简单得多。不过:退房时间可能会改变库存水平。@Foxbeefly:好策略。谢谢但是,请给我一个使用php/mysqli将下拉框限制为库存中最大数量的示例代码。查询数据库以获取该项目的可用库存,然后输出您的数量下拉列表,添加一个循环以创建下拉选项,受查询检索到的值限制。非常粗略:$stock\u level=get\u stock\u hand\u函数$productID;echo:for$i=1$我看了看我的代码:它不起作用,但当我硬编码时它就起作用了。错误在哪里: