codeigniter中的$ Ajax请求也检查请求是否正确

时间:2017-05-31 11:21:07

标签: php jquery ajax codeigniter

我已经尝试了很多并且搜索了很多,我做了同样的事情,但我不知道我哪里出错我是codeigniter的新手。你能告诉我代码在哪里出错吗?我想根据所选的条形码在输入字段中设置产品名称。我试图获取产品名称并尝试使用AJAX设置它但它无法正常工作。请告诉我代码中的错误在哪里?

这是我在Main.php中的控制器功能

 public function get_product()
    {   

        if (!$this->input->is_ajax_request()) {
           exit('No direct script access allowed');
        }
        $barcode = $_POST['barcode'];
        echo $barcode;
        exit;
        $data['result'] = $this->Item_model->get_product_using_barcode($barcode);
        print_r($data);
        exit;



    }

我在js文件中的Ajax代码:

$("#brcode").each(function(){

           $("#brcode").change(function(){

                    let value = $("#brcode").val();

                    $.ajax({
                            url: '<?php echo site_url("main/get_product"); ?>',
                            type: 'POST',
                            data: {'barcode': $('#brcode option:selected').val() },
                            dataType: 'json',
                            success: function(data) {
                            //console.log(data);
                            alert(data);
                        }
                    })
           });

        });

模型功能: -

public function get_product_using_barcode($barcode){
         $query = $this->db->get_where('items',array('barcode' => $barcode));
         $result = $query->row();
         return $result;


     }

请告诉我我的代码在哪里出错?

3 个答案:

答案 0 :(得分:2)

试试这段代码它对我有用。希望这会对你有所帮助。

<强> JQuery的:

$(document).ready(function() {
     $("#brcode").change(function(){
        let value = $("#brcode").val();
        $.ajax({
                // URL should be include index.php
                url: '<?php echo site_url("index.php/main/get_product"); ?>',
                type: 'POST',
                data: {'barcode': $('#brcode option:selected').val() },
                dataType: 'json',
                success: function(data) {
                //console.log(data);
                alert(data);
            }
        })
    });
 });

<强>控制器:

public function get_product()
{   
    if (!$this->input->is_ajax_request()) {
       exit('No direct script access allowed');
    }
    $barcode = $_POST['barcode'];
    $data['result'] = $this->Item_model->get_product_using_barcode($barcode);
    return json_encode $data;
}

<强>型号:

public function get_product_using_barcode($barcode){
     $query = $this->db->get_where('items',array('barcode' => $barcode));
     $result = $query->row();
     return $result;
 }

问候!

答案 1 :(得分:1)

当您使用dataType: 'json'时,您在本节中出错了,您的ajax应该返回一个json对象。

PHP标签在js文件中不起作用,因此您应该将ajax请求放在页面的页脚中或硬编码您的URL。例如:url:"http://localhost/retail/main/get_product"

我认为let value = $("#brcode").val();应为var value = $("#brcode").val();

所以你的控制器代码应该是

public function get_product()
{  
        $data = array();
        if (!$this->input->is_ajax_request()) {
           exit('No direct script access allowed');
        }
        $barcode = $_POST['barcode'];

        $data['result'] = $this->Item_model->get_product_using_barcode($barcode);
        echo json_encode(array("posted_data"=>$_POST,"database_data"=>$data['result']));
        exit;
}

ajax成功使用此

 success: function(data) {
      console.log("Posted data");
      console.log(data.posted_data);
      console.log("Database data");
      console.log(data.database_data);
  }

答案 2 :(得分:1)

你可以像这样更改js代码吗?并尝试在控制台上看到。

  $(document).ready(function() {
         $("#brcode").change(function(){
                var value = $("#brcode").val();
                $.ajax({
                        url: '<?php echo site_url("main/get_product"); ?>',
                        type: 'POST',
                        data: {'barcode': $('#brcode option:selected').val() },

                        success: function(data) {
                        //console.log(data);
                        alert(data);
                    }
                })
       });
 });