2017-06-08 5 views
0

今、私はJSONを使ってAJAX関数に複数の配列を渡して、検索候補に表示させようとしています。しかし、私はそれを渡そうとするたびに、JSONは私のデータを解析して、キーワード/検索用語がJSONのアレーの前に現れるようにして、解析が常に失敗するようにします。このキーワードを削除するにはどうすればよいですか? 変数が1つしか送られなかった場合、解析が成功したので、配列をどのように渡したかに問題があると仮定しましたが、理由を特定できませんでした。私はCodeigniterを使用しています。PHPからAJAXとJQueryへの複数の配列の受け渡しJSONを使ったオートコンプリート

ありがとうございます。

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 

答えて

0

私はまだ複数の配列を渡す方法を考え出していないので、今は私のコントローラ内の検索関数を1つの関数にグループ化し、データを1つの配列にロードしました。今はトリックでしたが、私はまだ答えを探しています。

関連する問題