首页 文章

使用AJAX将输入值传递给控制器的困难

提问于
浏览
1

我有这个PHP CodeIgniter代码,在视图中我从文本字段获取输入 . 使用AJAC我试图使用 GET 请求将此值传递给控制器 . 然后,控制器将从我的模型中调用函数以检索与搜索条件匹配的数据库记录 .

由于某种原因,它不起作用 . 我试图在控制器中进行var转储以查看该值是否由AJAX传递,但我没有得到任何东西 . 任何想法我做错了,为什么我不能在控制器中收到表格 Value ?

视图:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.13.3/jquery.min.js"</script>
<script language="Javascript">
    $(document).ready(function () {
        $('#submitbutton').click(function () {
            $.ajax({
                url: "../../index.php/testcontroller/getdatabasedata",
                data: {
                    'searchvalue' : $('#inputtext').val() 
                },
                method: 'GET'
            }).done(function (data) {
                var dataarray = data.split('##');
                $('#question').html(dataarray[ 1 ]);
                $('#answer1').html(dataarray[ 2 ]);
            });
            return false;
        });
    }); 
</script>  
</body>

调节器

public function getdatabasedata()
{
    $this->load->model('testmodel');
    $year = $this->input->get('searchvalue');
    //I TRIED TO DO A VARDUMP($YEAR) BUT I DON'T GET ANYTHING!

    $movie = $this->testmodel->findquestion($year);
    $moviesstring = implode(",", $movie);
    echo $moviesstring;
}

模型

function findquestion($searchvalue)
{
    $this->db->where('answer1', $searchvalue);
    $res = $this->db->get('questions');
    var_dump($res)
    if ($res->num_rows() == 0)
    {
        return "...";
    }
    $moviearray = $res->row_array();
    return $moviearray;
}

谢谢

2 回答

  • 0

    脚本:

    <script 
      src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
    </script>
    <script language="Javascript">
    $(document).ready(function ()
    {
      $("#submitbutton").bind("click",function() 
        { 
          var target_url = '<?php echo(base_url()."testcontroller/getdatabasedata") ; ?>';
          var data = {'searchvalue' : $('#inputtext').val() }; 
          $.ajax ({
    
                  url : target_url, 
                  type: 'GET', 
                  data: data, 
                  cache: false, 
                  success: function(controller_data)
                    { 
                      var dataarray = controller_data.split('#'); 
                      $('#question').html(dataarray[1]); 
                      $('#answer1').html(dataarray[3]); 
                    }, 
                }); 
                return false; 
        }); 
    });
    </script>
    

    .bind(“click”,function() - 为click事件添加引号.var dataarray = controller_data.split('#'); - split data caracter必须与控制器中的implode函数中的字符匹配 .

    控制器:

    public function getdatabasedata(){
    
            $this->load->model('testmodel');
            $year = $this->input->get('searchvalue');
            $movie = $this->testmodel->findquestion($year); 
            $separated = implode("#", $movie);
            echo $separated;
    
        }
    

    希望这有帮助 .

  • 1

    我将分享我在视图中使用的常用ajax代码,确保您的基本URL正确无误

    $("#submitbutton").bind("click",function()
            {
    
                var target_url = '<?php echo(base_url()."testcontroller/getdatabasedata") ; ?>';
                $.ajax
                (
                {
                    url : target_url,
                    type: "GET",
                    // data: {'searchvalue' : $('#inputtext').val()},
                    cache: false,
                    success: function(data)
                    {
                        alert(data);
                    },
                    error: function(jqXHR, textStatus, errorThrown)
                    {
                        alert("error during loading ....");
                    }
                });
    
            });// end loading via ajax
    

    在你的控制器中只是回应一些东西

    public function getdatabasedata()
    {
        //$this->load->model('testmodel');
        //$year = $this->input->get('searchvalue');
        //I TRIED TO DO A VARDUMP($YEAR) BUT I DON'T GET ANYTHING!
    
        //$movie = $this->testmodel->findquestion($year);
        //$moviesstring = implode(",", $movie);
        //echo $moviesstring;
        echo "hello";
    }
    

相关问题