0

データベースにクエリを実行し、結果を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));
    }
}

開発者ツールで、サーバーの応答を確認できます 108NULL108私のエコーであり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"]'

任意の支援をいただければ幸いです。

よろしくお願いいたします。

4

1 に答える 1

1

私が見る間違いは、コントローラーに何も返していないことです。

モデル

function get_skufamily_cube($q)
{
    $Query="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%'";
    return  $this->db->query($Query)->row();
}

コントローラ

function getJson(){
    $this->load->model('Sales_model');
    if (isset($_POST['data'])){
        $q = strtolower($_POST['data']);
        $viewData   =   $this->Sales_model->get_skufamily_cube($q);
        $data_json = json_encode($viewData);
        echo $data_json;
    }
}

編集:
モデル関数の return 命令を変更します。

$result = $this->db->query($Query)->row();
return $result->ProductCode;
于 2013-04-23T07:03:23.197 に答える