简体   繁体   English

如何在 ajax 中传递 2 个参数,在 php 中调用 function?

[英]How can I pass 2 parameter in ajax call function in php?

I'm creating a table variation function where users can select sizes based on their chosen color.我正在创建一个表格变体 function ,用户可以根据他们选择的颜色在其中 select 尺寸。

This is my variation table这是我的变化表

|id | product_id | product_qty | product_colour | product_size
|1  |  1         |   30        |   red          |    23
|2  |  1         |   24        |   blue         |    34
|3  |  1         |   12        |   blue         |    23
|4  |  2         |   23        |   yellow       |    12
|5  |  2         |   1         |   white        |    12

Product id is fetched based on the url.根据 url 获取产品 ID。

Below is my function of selecting colour.下面是我选择颜色的function。

url和接口函数

The user has to select the colour first after the colour is chosen, the size option value will be displayed based on the colour chosen.选择颜色后,用户必须先输入颜色 select,尺寸选项值将根据选择的颜色显示。

But I have a problem in passing multiple parameters in my ajax call.但是我在 ajax 调用中传递多个参数时遇到问题。 I want to pass the product_id in my ajax call, and get the product id value then used it in my ajaxpro.php .我想在我的 ajax 调用中传递 product_id,并获取产品 id 值,然后在我的ajaxpro.php中使用它。 I'm not sure how to pass the product_id value in the ajax call function.我不确定如何在 ajax 调用 function 中传递 product_id 值。

  <div class="panel-heading">Select Colour and get size</div>
      <div class="panel-body">
            <div class="form-group">
                <label for="title">Select Colour:</label>
                <select name="product_colour" class="form-control">
                    <option value="">--- Select Colour ---</option>


                    <?php
                        require('config.php');

                        $sql = $link ->prepare("SELECT DISTINCT product_colour, product_id FROM variation
                                               WHERE product_id = ? ");
                        $sql->bind_param("i", $_GET["mid"]);
                        $sql->execute();
                        $result = $sql->get_result();
                        while($row = $result->fetch_assoc()) {
        
                            $product_id = $row['product_id'];
                            
                            echo "<option value='".$row['product_colour']."'>".$row['product_colour']."</option>";      
                        }

                       
                    ?>


                </select>
            </div>

            <div class="form-group">
                <label for="title">Select Size:</label>
                <select name="product_size" class="form-control" style="width:350px">
                </select>
            </div>

<script>
$( "select[name='product_colour']" ).change(function () {
    var ColourID = $(this).val();
    

    if(ColourID) {


        $.ajax({
             url: "ajaxpro.php",
            dataType: 'Json',
            data: {'product_colour':ColourID},
            success: function(data) {
                $('select[name="product_size"]').empty();
                $.each(data, function(key, value) {
                    $('select[name="product_size"]').append('<option value="'+ key +'">'+ value +'</option>');
                });
            }
        });


    }else{
        $('select[name="product_size"]').empty();
    }
});
</script>

ajaxpro.php

<?php

   require('config.php');
   $sql= $link->prepare("SELECT * FROM variation WHERE product_id = ? AND product_colour = ? ");
   $sql->bind_param("is", $_GET['mid'], $_GET['product_colour']);
   $sql->execute();
   $result = $sql->get_result();

   $json = [];
   while($row = $result->fetch_assoc()){
        $json[$row['product_size']] = $row['product_size'];
       
   }

   echo json_encode($json);
?>

Put $_GET['mid'] in a JavaScript variable, and then send it in the data: option.$_GET['mid']放入 JavaScript 变量中,然后在data:选项中发送。

var mid = <?php echo json_encode($_GET['mid']); ?>;

$( "select[name='product_colour']" ).change(function () {
    var ColourID = $(this).val();
    if(ColourID) {
        $.ajax({
             url: "ajaxpro.php",
            dataType: 'Json',
            data: {'product_colour':ColourID, mid: mid},
            success: function(data) {
                $('select[name="product_size"]').empty();
                $.each(data, function(key, value) {
                    $('select[name="product_size"]').append('<option value="'+ key +'">'+ value +'</option>');
                });
            }
        });
    }else{
        $('select[name="product_size"]').empty();
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM