データベースにクエリを実行し、結果をjsonとしてエンコードしてコントローラーに送り返すコードイグナイターモデル関数があります。
関数全体を以下に示します。
function get_skufamily_cube($q){
$sql=("select min([Pieces]) as ProductCode from
(SELECT
[ProductCode]
,[Description]
,[Length]
,[Pieces]
,[Thickness]
,[Width]
,([width]*1000) w2
,([thickness]*1000) t2
,REPLACE((convert(varchar,convert(decimal(8,1),length))),'.','') AS l2
,concat(([width]*1000),([thickness]*1000),REPLACE((convert(varchar,convert(decimal(8,1),length))),'.','')) AS pc
,REPLACE([ProductCode],concat(([width]*1000),([thickness]*1000),REPLACE((convert(varchar,convert(decimal(8,1),length))),'.','')),'') as grade
,CONCAT(([width]*1000),([thickness]*1000),REPLACE([ProductCode],concat(([width]*1000),([thickness]*1000),REPLACE((convert(varchar,convert(decimal(8,1),length))),'.','')),'')) as options
FROM [hammerhead].[dbo].[ProductList]) as p
where Options like '%$q%' ");
$query=$this->db->query($sql);
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['ProductCode']));
echo $row['ProductCode']; // to see database result and troubleshoot
}
$this->output->set_content_type('application/json')->set_output(json_encode($row_set));
}
}
$q はクエリに正常に渡されており、クエリの出力はecho $row['ProductCode'];
必要な結果と一致しています。この場合は 108 です。データベース クエリは、1 つのフィールドに 1 つの結果を返します。
何らかの理由で、これはコントローラーに正しく渡されません。
コントローラは次のとおりです。
$this->load->model('Sales_model');
if (isset($_POST['data'])){
$q = strtolower($_POST['data']);
$data = $this->Sales_model->get_skufamily_cube($q);
$this->output->set_content_type('application/json')->set_output(json_encode($data));
}
}
開発者ツールで、サーバーの応答を確認できます
108NULL
。108
私のエコーでありNULL
、json応答です。エコーを削除すると、これは単に NULL になります。
最後に、テーブル行の入力に値を入力する必要があります。これに対する私のビューのjquery構文は次のとおりです。
$.post('get_skufamily_cubes', {data:selectedObj.value},function(result)
{
$(this).find('input[id^="cubesperbundle"]').val(result);
});
現在、何も入力されていません。HTML入力の名前とIDは次のとおりcubesperbundle
ですが、行番号が追加されているため、'input[id^="cubesperbundle"]'
任意の支援をいただければ幸いです。
よろしくお願いいたします。