【问题标题】:Calling Jquery click event with AJAX POST method after triggering already jquery click event in codeigniter framewormk在codeigniter framewormk中触发已经jquery单击事件后,使用AJAX POST方法调用Jquery单击事件
【发布时间】:2022-01-17 00:12:40
【问题描述】:

我想从来自数据库的两个下拉列表中过滤品牌明智的优惠券。当我选择/单击第一个下拉列表以选择品牌名称时,它会自动选择使用 AJAX 和 JQUERY 在第一个下拉列表中为所选品牌注册的优惠券。我做了所有但没有工作。

我是 CodeIgniter 的新手。即使一切正确,Ajax 也没有调用控制器功能,请帮助。提前致谢

<!-- script code for two dropdown coming from database in view file -->
<script>
   $(document).ready(function() {
       $(document).on('click', '.add', function() {
           var html = '';
           html += '<tr>';
           html += `<td>
                       <select name="Brand_name[]" id="brand1" class="form-control item_unit">
                           <option value="">Select Brand Name</option>

                           <?php
                               if (isset($bdata) && !empty($bdata)) {
                                   foreach ($bdata as $brand) {
                                       echo '<option value="'.$brand->userId.'" >'.$brand->name.'</option>';
                                   }
                               }
                           ?>
                       </select>`;

           html += `<td>
                       <select name="item_unit[]" id="coupon_n" class="form-control item_unit">
                           <option value="">Select Coupon Name</option>   

                           <?php
                               if (isset($udata) && !empty($udata)) {
                                   foreach ($udata as $coupon) {
                                       echo '<option value="'.$coupon->couponid.'" >'.$coupon->offer_name.'</option>';
                                   }
                               }
                           ?> 
                       </select>`;
       });
   });
</script>
<!-- Again jQuery code for brand wise coupon filtering for passed brand_id when I clicked on 1st dropdown so that automatically next dropdown (coupons register for perticular  brand)work -->
<script>
    $("body").on('click', '#brand1', function() {
        var brand_id = $(this).val();
        console.log(brand_id);

        $.ajax({
            type: 'post',
            url: '<?php echo base_url('index.php/admin/Package_controller/getCoupons');?>',
            data: {
                brand_id: brand_id
            },
            // dataType: "dataType",
            success: function(response) {
                $("#coupon_n").html();
            }
        });
    });
</script>
//controller function to get coupon for selected brand in 1st drop down passed brand id using ajax post method and URL
public function getCoupons()
{
    $admin_id=$_POST['brand_id'];
    $coupons=$this->Add_Packagemodel->fetch_coupon_Details($admin_id);
    $data['coupons']=$coupons;
    $this->load->view('admin/package/addpackage', $data);
}

//model function for filtering coupons after selecting brand id from 1st dropdown
public function fetch_coupon_Details()
{
    $c_result=$this->db->select('offer_name')->from('coupon_managment')->get();

    if ($c_result->num_rows()) 
    {
        return $c_result;
    } 
    else 
    {
        return false;
    }
}

【问题讨论】:

    标签: jquery json ajax codeigniter dropdown


    【解决方案1】:

    这是一种层次结构,首先您通常使用php 填充品牌过滤器,然后使用onchange 事件对控制器执行ajax 调用,从控制器执行echo json_encode($couponsBasedOnBrand);,其余工作在@987654325 中完成@。

    function getCouponByBrand(brand_id,base_url){
      url_final = base_url+"/getCouponByBrand"; //your url; goes to controller and get coupons by brand
      $.ajax({
         type: "POST",
         url: url_final,
         data: {brand_id : brand_id},
         dataType: "text",
         cache:false,
         success:
          function(data){
            $('#coupon_id').css('display', 'block');
            $('#coupon_id').html('<option value="">Select Coupon</option>');
              var dataObj = jQuery.parseJSON(data);
              if(dataObj){
                $(dataObj).each(function(){
                  var option = $('<option />');
                  option.attr('value', this.id).text(this.name);
                  $('#coupon_id').append(option);
                });
              }else{
                $('#coupon_id').html('<option value="">Coupons are not available</option>');
              }
            }
          });
     return false;
    }
        <select name="brand_id" id="brand_id"
          onchange="getCouponByBrand(this.value,'<?php echo base_url();?>')" style="display:block;">
          <option value="">Select Brand</option>
          <?php 
          if (isset($bdata) && !empty($bdata)) {
             foreach ($bdata as $brand) {
                 echo '<option value="'.$brand->userId.'" >'.$brand->name.'</option>';
             }
          }
          ?>
        </select>
    
        <select name="coupon_id" id="coupon_id">
          <option value="">Select Coupon</option>
        </select>

    【讨论】:

    • 非常感谢您的回复,但我想添加我的项目要求就像在点击事件中我们正在为优惠券添加新行(因为优惠券的数量是动态的,即我们不知道如何许多优惠券将由用户/运营商添加)因此 JQuery 函数调用单击添加新优惠券按钮而不是再次调用一个 JQuery 函数需要使用 ajax 来过滤品牌明智的优惠券所以请提供两个 JQuery 函数调用一个的解决方案一个接一个。
    • 抱歉,我不太清楚。你能分享一些你的需求图片吗
    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多