3

我有一个由 jquery 调用的控制器函数:

  function get_sku_prices(){
    $this->load->model('Sales_model');
    if (isset($_GET['term'])){
      $q = strtolower($_GET['term']);
      $this->Sales_model->get_sku_price($q);
    }
}

模型 get_sku_price 为:

  function get_sku_price($q){
    $this->db->select('price');
    $this->db->where('sku', $q);
    $query = $this->db->get('products');
    if($query->num_rows > 0){
      foreach ($query->result_array() as $row){
        $row_set[] = htmlentities(stripslashes($row['price'])); //build an array
      }
      $this->output->set_content_type('application/json')->set_output(json_encode($row_set));

    }
  }

我想要的是将上述查询的结果(本质上是select price from products where sku=36113)返回到我的视图表单上的输入变量“价格”。

我的视图语法是:

<html>
   <head>
      <title>
         Capture blank Order
      </title>
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script> 
      <link rel="stylesheet" href="<?php echo base_url() ?>css/sales.css" />

<script type="text/javascript"> 
 function callAutocomplete(element) 
 { 
     $(element).autocomplete( 
     { 
         source: "sales/get_sku_codes", 
         messages: 
         { 
             noResults: '', 
             results: function() {} 
         }, 
         select: function( event, ui ) 
         {
             var selectedObj = ui.item; 
             $.post('sales/get_sku_prices', {data:selectedObj.value},function(result) { 
             $(ui).parent('tr').find('input[id^="pricepercube"]').val(result); 
             }); 
         } 
     }); 
 } 

 $(function() 
 { 
     var counter = 1; 
     jQuery("table.authors-list").on('change','input[name^="qty"]',function(event) 
     { 
         event.preventDefault(); 
         counter++; 
         var newRow = jQuery('<tr>'+ 
         ' <td><a class="deleteRow"> x </a></td>' + 
         ' <td><input type="text" id="product' + counter + '" name="product' + counter + '" /></td>' + 
         ' <td><input type="text" id="qty' + counter + '" name="qty' + counter + '" /></td>'+ 
         ' <td><input type="text" id="price' + counter + '" name="price' + counter + '" /></td>'+ 
         ' <td><input type="text" id="discount' + counter + '" name="discount' + counter + '"  /></td>'+ 
         ' <td valign=top><input type="checkbox" id="treated' + counter + '" name="treated' + counter + '" /></td>'+ 
         ' </tr>'); 
         jQuery('table.authors-list').append(newRow); 
         callAutocomplete("#product"+ counter); 
     }); 

$("#product").autocomplete( 
 { 
 source: "sales/get_sku_codes", 
 messages: 
 { 
 noResults: '', 
 results: function() {} 
 }, 
 select: function( event, ui ) 
 { 
 var selectedObj = ui.item; 
 $.post('<?=site_url("sales/get_sku_prices")?>', {data:selectedObj.value},function(result) 

 { 
 $("#price").val(result); 
 }); 
 } 
 });

 }); 

 </script>


  </head>
<body>

<table class="authors-list" border=0>
  <tr><td></td><td>Product</td><td>Qty</td><td>Price/Cube</td><td>Discount</td><td>treated</td></tr>
  <tr>
   <td><a class="deleteRow"> x </a></td>
   <td><input type="text" id="product" name="product" /></td>
   <td><input type="text" id="qty" name="qty" /></td>
   <td><input type="text" id="price" name="price" /></td>
   <td><input type="text" id="discount" name="discount" /></td>
   <td valign="top" ><input type="checkbox" id="treated" name="treated" /></td>
</tr>
</table>

</body>
</html>

Firefox 返回 200 OK 消息。可以看到post信息中包含了商品输入的内容,但是返回的html是空白的?

更新

mysql 在此处输入图像描述

邮政 在此处输入图像描述

空白的html 在此处输入图像描述

我的模型查询是否正确?帖子是否正确传递给他的模型?我怎样才能验证这一点?

再次感谢。

4

2 回答 2

2

您在内部传递数据$.post并将其作为term.

改变

if (isset($_GET['term'])){

if (isset($_POST['data'])){
于 2013-03-21T09:47:10.743 回答
0

您应该从控制器而不是模型输出数据。

控制器:

function get_sku_prices(){
    $this->load->model('Sales_model');
    if (isset($_GET['term'])){
        $q = strtolower($_GET['term']);
        $data = $this->Sales_model->get_sku_price($q);
        $this->output->set_content_type('application/json')->set_output(json_encode(data));
    } 
}

模型:

 function get_sku_price($q){
    $this->db->select('price');
    $this->db->where('sku', $q);
    $query = $this->db->get('products');
    if($query->num_rows > 0){
        foreach ($query->result_array() as $row){
            $row_set[] = htmlentities(stripslashes($row['price'])); //build an array
       }
       return $row_set;
    }
  }

除上述内容外,您通过 AJAX 将数据作为 POST 数据传递,但在您的控制器中,您正尝试从 GET 数组接收数据。

于 2013-03-21T09:04:31.127 回答