Javascript 在CodeIgniter中返回int而不是字符串的Ajax调用

Javascript 在CodeIgniter中返回int而不是字符串的Ajax调用,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,这是我的模型。get items将根据位置从数据库中获取项目名称 class Itemsale_db extends CI_Model public function getItems($userid,$loc) { $sql = "SELECT DISTINCT Name from itransfile where"; if (is_numeric($loc)) $sql .= " lo

这是我的模型。get items将根据位置从数据库中获取项目名称

class Itemsale_db extends CI_Model

    public function getItems($userid,$loc)
        {
            $sql = "SELECT DISTINCT Name from itransfile where";

            if (is_numeric($loc))
                $sql .= " location_id = ".$loc;
            else 
                $sql .= " location_id IN(SELECT location_id FROM client_locations where client_id = " .$userid. ")";

            $query = $this->db->query($sql);        
            $item = $query->result_array();
                return $item;
        }
}
这是我的控制器。getItemsAjax将调用模型并返回json编码的数组以供查看

class ItemSale extends CI_Controller {

public function getItemsAjax($userid,$locid)
        {
            $this->load->model('itemsale_db');
             header('Content-Type: application/x-json; charset=utf-8');
             $item = $this->itemsale_db->getItems($userid,$locid);
             echo json_encode($item);
        }
}
下面是Javascript。loc是位置选择框,items是项目选择框

$(document).ready(function(){
        $('#loc').change(function(){ 
            $("#items > option").remove(); 
            var opt = $('<option />');
            opt.val('All');
            opt.text('All');
             $('#items').append(opt);
            var loc_id = $('#loc').val(); 
            var userid = "<?php echo $this->session->userdata('userid'); ?>";

            $.ajax({
                type: "POST",
                url: "<?php echo base_url()?>" + "index.php/itemsale/getItemsAjax/"+loc_id + "/"+userid, 

                success: function(item) 
                {
                $.each(item,function(Name) 
                {

                    var opt = $('<option />');
                    opt.val(Name);
                    opt.text(Name);
                    $('#items').append(opt); 
                });
                }

            });         

    });
 });
$(文档).ready(函数(){
$('#loc').change(function(){
$(“#项>选项”).remove();
var opt=$('');
选择值(“全部”);
选择文本(“全部”);
$('#items')。附加(opt);
var loc_id=$('#loc').val();
var userid=“”;
$.ajax({
类型:“POST”,
url:“+”index.php/itemsale/getItemsAjax/”+loc_id+“/”+userid,
成功:功能(项目)
{
$。每个(项目、功能(名称)
{
var opt=$('');
选择值(名称);
选择文本(名称);
$('#items')。附加(opt);
});
}
});         
});
});
Ajax调用返回整数列表而不是项目名称。

console.log(项目) 您的代码问题是这样的(函数格式不正确)

第一个参数应该是索引,第二个参数应该是以美元为单位的值 回拨

这是
$的正确格式。每个
回调
函数(整数索引数组,对象值)

在ajax成功中使用以下代码:

$.each(item,function(index,Name) {//added index first and then value
    var opt = $('<option />');
    opt.val(Name);
    opt.text(Name);
    $('#items').append(opt); 
});
$。每个(项、函数(索引、名称){//首先添加索引,然后添加值
var opt=$('');
选择值(名称);
选择文本(名称);
$('#items')。附加(opt);
});
注意:当您在每个回调中只使用单个参数时,它的名称
Name
ad
Index

谢谢您的帮助:)它解决了我的问题