【问题标题】:AJAX jQUERY to pass data in POST to codeigniter ControllerAJAX jQUERY 将 POST 中的数据传递给 codeigniter 控制器
【发布时间】:2016-02-27 07:14:50
【问题描述】:

我想使用 AJAX 和 Jquery 以 POST 方法将数据传递给我的控制器。

看起来像这样:https://jsfiddle.net/10bhsd2o/ 我有显示数据库记录的引导下拉菜单。

<li class="dropdown">


  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Your Sites <span class="caret"></span></a>
  <ul class="dropdown-menu">
    <li ><a href="#"><?php

foreach($sites as $site)
{

echo "<li class='specialLink' id='$site->site_key'>".$site->site_key."</li>";
}?></a></li>

  </ul>
</li>

现在我想将数据发送到我的控制器,我从&lt;li&gt;&lt;/li&gt; 标签的下拉列表中选择的项目。

这是我的脚本:

   <script type="text/javascript">



    $( ".specialLink" ).click(function() {
        var value = this.id;

        var url= "<?php echo base_url('customer/dashboard/index') ?>"; 
        alert(url) 
         //get value for throw to controller
        alert(value);  

        $("#specialLink").submit(function(){
            $.ajax({ 
                    type: "POST", //send with post 
                    url: "<?php echo base_url('customer/dashboard/index') ?>", 
                    data: {value:value}, 
                    success:function(data){ 
                    alert(data) 
                    } 
              });
        });
    });


    </script>

HTML 生成

<ul class="dropdown-menu">
    <li ><a href="#"><li class='specialLink' id='54th-65hy'>54th-65hy</li><li class='specialLink' id='HT45-YT6T'>HT45-YT6T</li></a></li>

  </ul>

控制器

public function index()
{

    var_dump($_POST);
    print_r($_POST);
    $this->data['subview'] = 'customer/dashboard/index';  
    $this->load->view('customer/_layout_main',$this->data);
}

现在我的警报是正确的,我在警报中获得了正确的 url 我在警报中获得了正确的数据。

但在我的控制器中当我执行 print_r($_POST);我得到空白数组为什么?我哪里错了?

【问题讨论】:

  • 向我们展示你的controller函数
  • 添加了控制器@roullie
  • 使用此代码获取数据 $value=$this->input->post('value');
  • 这是我在您的另一篇文章中提出的问题。你为什么要$("#specialLink").submit()
  • 错字我认为echo "&lt;li class='specialLink' id='".$site-&gt;site_key ."'&gt;".$site-&gt;site_key."&lt;/li&gt;"; }?&gt;&lt;/a&gt;&lt;/li&gt;

标签: javascript php jquery ajax codeigniter


【解决方案1】:

更改您的 html 标记。因为你在锚内循环

    <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Your Sites <span class="caret"></span></a>
      <ul class="dropdown-menu">
        <?php
          foreach($sites as $site)
          {
            echo "<li class='specialLink' id='$site->site_key'><a href='#'>".$site->site_key."</a></li>";
          }
        ?>
      </ul>
    </li>

然后改变你的click函数

    $( ".specialLink" ).click(function() {
        var value = this.id;
        var url= "<?php echo base_url('customer/dashboard/index') ?>"; 
        alert(url) 
         //get value for throw to controller
        alert(value); 
        $.ajax({ 
            type: "POST", //send with post 
            url: "<?php echo base_url('customer/dashboard/index') ?>", 
            data: {value:value}, 
            success:function(data){ 
            alert(data) 
            } 
        });
    });

我不知道您是否将index 函数用于其他视图,但用于测试目的。先试试这个

    public function index()
    {
        if(!empty($_POST)){
            var_dump($_POST);
            print_r($_POST);
        }else{
            $this->data['subview'] = 'customer/dashboard/index';  
            $this->load->view('customer/_layout_main',$this->data);
        }
    }

让我知道你在第三次警报中得到了什么

【讨论】:

  • @PraveenKumar 我明白了 :)
  • 现在我得到了三个警报,第一个我得到了 url,第二个我得到了我选择的项目,第三个我得到了我所有的 html 数据。
  • @Rajan 首先尝试像上面那样更改您的index 函数。让我知道您第三次得到什么alert
  • @rourllie 我得到一个数组,其中我也有这个值
  • @Rajan 所以你有它.. 你的$_POST 数据。
【解决方案2】:

你只需要改变你的 Javascript 你删除 $("#specialLink").submit(function(){});

 <script type="text/javascript">



$( ".specialLink" ).click(function() {
    var value = this.id;

    var url= "<?php echo base_url('customer/dashboard/index') ?>"; 
    alert(url) 
     //get value for throw to controller
    alert(value);  


        $.ajax({ 
                type: "POST", //send with post 
                url: "<?php echo base_url('customer/dashboard/index') ?>", 
                data: {value:value}, 
                success:function(data){ 
                alert(data) 
                } 
          });

});


</script>

【讨论】:

  • 我收到一个大警报,其中显示了我的所有 html 数据
  • 您的控制器是您调用的视图文件,以便视图文件 html 显示在警报中,显示您删除加载视图文件
【解决方案3】:
$( ".specialLink" ).click(function() {
        var value = this.id;
        var url= "<?php echo base_url('customer/dashboard/index') ?>"; 
        alert(url) 
        alert(value); 
    $.post(url,{value:value},function(data){alert(data)});
  });

【讨论】:

  • 在哪里可以看到 POST 数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2012-01-07
  • 2014-01-27
相关资源
最近更新 更多