簡體   English   中英

Codeigniter中的$ Ajax請求也會檢查請求是否正確

[英]$Ajax request in codeigniter also check if request is correct

我已經嘗試了很多,搜索了很多,我所做的與我看到的相同,但是我不知道我要去哪里錯了,我對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;


     }

請告訴我我的代碼在哪里出錯了?

試試這個代碼對我有用。 希望這會幫助你。

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;
 }

問候!

您在使用dataType: 'json'在本節中出錯,您的ajax應該返回一個json對象。

PHP Tag在js文件中不起作用,因此您應該將ajax請求放在頁面的頁腳中或對網址進行硬編碼。 例如: 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);
  }

您可以像這樣更改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);
                    }
                })
       });
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM