Codeigniter と jquery で髪をかきむしる。
現在、これをトラブルシューティングするための非常に基本的なコード セットがあります。
現在、私のインデックス関数は私のビューを呼び出しています。ビューは、このシナリオで jquery オートコンプリートを完全に処理します。
index を indextest または他の名前に変更すると、オートコンプリートが機能しなくなります。jquery の出力が、ページのデフォルトのメソッドである index.php に明確に渡されているようです。
メソッドを返すか表示する必要があることを指定する方法はありますか?
私のコントローラーは:
<?Php
class Sales extends MY_Controller{
function __construct() {
//call parent constructor
parent::__construct();
$this->load->model('sales_model');
}
function index(){
$this->load->view('sales/new_order_details');
}
function get_customers(){
$this->load->model('Sales_model');
if (isset($_GET['term'])){
$q = strtolower($_GET['term']);
$this->Sales_model->get_customer($q);
}
}
function login() {
redirect('/pointer/login');
}
function logout() {
redirect('/pointer/logout');
}
}
私のモデル
<?php
// (Array of Strings)
class Sales_model extends MY_Model{
function get_customer($q){
$this->db->select('CustomerName');
$this->db->like('CustomerName', $q);
$query = $this->db->get('Customers');
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['CustomerName'])); //build an array
}
echo json_encode($row_set); //format the array into json data
}
}
}
私の見解
<html>
<head>
<title>
Capture New Order
</title>
<link href="<?php echo base_url() ?>application/css/ui-lightness/jquery-ui-1.8.custom.css" media="screen" type="text/stylesheet" rel="stylesheet">
<script src="<?php echo base_url() ?>application/scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/jquery-ui-1.10.1.custom.min.js" type="text/javascript"></script>
<script src="<?php echo base_url() ?>application/scripts/autocomplete.js" type="text/javascript"></script>
</head>
<body>
<div data-role="page" data-theme="a">
<div class="wrap-header">
<div data-role="header" data-mini="true" data-ajax="false">
<a data-icon="grid" data-mini="true" data-theme="a" onclick="window.location.href='/pointer'">Menu</a>
<h3>New Order Details</h3>
</div>
</div>
<div data-role="content">
<form>
<label for="customer">Customer</label>
<input type="text" id="customer" />
</form>
</div>
</body>
</html>
autocomplete.js
$(function(){
$("#customer").autocomplete({
source: "sales/get_customers"
});
});
前述のように、コントローラーの index() メソッドを indextest() に変更し、そのメソッドを直接参照すると、オートコンプリートが機能しなくなります。
簡単なことを見逃しているのでしょうか、それともうまくいかないもっと大きな理由がありますか?
いつも助けてくれてありがとう、
UPDATE AS PER FABIO オートコンプリート スクリプトの呼び出しに関する Google Chrome 開発者からの出力
通常の index() 動作)
インデックステキスト()