繁体   English   中英

将多个数组从PHP传递到AJAX,并使用JSON自动完成JQuery

[英]Passing multiple arrays from PHP to AJAX and JQuery Autocomplete with JSON

现在,我正在尝试使用JSON将多个数组传递给我的AJAX函数,以便它将显示在搜索建议中。 但是,无论何时我尝试传递它,JSON都会始终解析我的数据,以便关键字/搜索词会在JSON出现之前显示出来,因此解析始终会失败。 如何删除该关键字? 如果仅发送了一个变量,则解析成功,因此我认为问题出在如何传递数组上,但我不知道为什么。 我正在使用Codeigniter。

感谢您的时间。

HTML:

<input type="text" id="searchterm" name="searchterm">

PHP(控制器):

function search_produkTindakan(){
        if (isset($_GET['searchterm'])) {
            $cari=$this->input->get('searchterm');
        }
        $tindakan = array();
        $nama_jns_barang = array();
        $tindakan = $this->billing_m_pasien->pencariandata_tindakan($cari);
        $nama_jns_barang= $this->billing_m_pasien->pencariandata_produk($cari);
        echo json_encode(array('tindakan'=>$tindakan, 'nama_jns_barang'=>$nama_jns_barang));
    }

PHP(模型):

function pencariandata_tindakan($cari='')
    {
        $query = $this->db->query("SELECT tindakan, kategori FROM daftar_tindakan WHERE tindakan LIKE '%$cari%'  OR kategori LIKE '%$cari%' "  );
        if ($query->num_rows() > 0) {
          $muatData = $query->row();
          $data = array();
          // $data['tindakan'] = $muatData->tindakan;
          $query = $query->result_array();
          if( is_array($query) && count ($query) > 0 ){ 
            $n = 0;
            foreach ($query as $row ) 
            {
              $data['tindakan'.'['.$n.']'] = $row['tindakan'];
              $n++;
            }
          }
          asort($data);
          return $data;
        }
        else {
          echo $cari;
          // return false;
        }
      }

使用Javascript:

var caridata=$("#searchterm").val();
$("#searchterm").autocomplete({ 
source: function( request, response ) { 
  $.ajax({
    url:"<?php echo site_url('bla');?>",
    type:"GET",
    data:"searchterm="+searchterm,
    dataType : 'json',
    cache:false,
    success: function( data ) {
        var tindakan = data[0];
        var nama_jns_barang = data[1];
        if(data!=null) {
            if (tindakan!=null) {
                response(tindakan);
            }
            else if (nama_jns_barang!=null) {
                response(nama_jns_barang);
            }
        }
        else {
            //
        }
        }, // end of success
        error: function(jqXHR, textStatus, errorThrown) {
            alert(errorThrown);            
     }  //end of error                          
                            }) // end of ajax
                    }, // end of source
                    minLength: 2,
                    select: function( event, ui ) {
                        $("#caridata").val(ui.item.id);
                    } // end of select
                }); // end of autocomplete

我还没有弄清楚如何传递多个数组,所以现在我只是将控制器中的搜索功能分组为一个函数,并将数据加载到一个数组中。 它暂时起到了作用,但我仍在寻找答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM