javascript - jQuery 自动完成 ajax 请求不显示返回的数据

标签 javascript php jquery ajax codeigniter

当我在调试开发人员工具上看到 ajax 请求响应了数据,但数据未呈现在文本框中。如图所示,数据包含一些特殊字符。

响应函数究竟有什么问题?我应该将什么(比如 utf-8 编码)添加到 ajax 调用中以显示特殊字符?

enter image description here

html:

<select name="selCat">
    <option>....</option>
</select>

<input class="col-3" type="text" id="txtPOI" name="txtPOI" />

j查询:

$("#txtPOI").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '<?php echo site_url("crowd/get_POIs") ?>',
                data: {cat: selectedCode, q: request.term},
                dataType: "json",
                type: "post",
                success: function(data) {
                    response(data);
                },
                fail : function ( jqXHR, textStatus, errorThrown ) {
                    console.log(jqXHR);
                    console.log(textStatus);
                    console.log(errorThrown);
                },minLength: 3
            });
        }
    });

Controller :

function get_POIs(){
        $cat = $this->input->post('cat');
        $q = $this->input->post('q');
        //echo $cat;

        if (isset($cat) && isset($q)){
            $cat = strtolower($cat);
            $q = strtolower($q);
            $data=$this->crowd->get_POIs($cat,$q);
            //echo "aa";
            $a_json = array();
            if(count($data) > 0){
                foreach ($data as $row){
                      $a_json_row["title"] = $row->title;
                      $a_json_row["contentid"] = $row->contentid;
                      $a_json_row["latitude"] = $row->latitude;
                      $a_json_row["longitude"] = $row->longitude;
                      array_push($a_json, $a_json_row);

                }
                echo json_encode($a_json);
            }   
        }

    }

型号:

function get_POIs($cat, $q){

    $this->db->DISTINCT();
    $this->db->select('title, a.contentid, latitude, longitude, address');
    $this->db->from('attraction a');
    $this->db->join('geographicdata g', 'a.contentid = g.contentid', 'left');
    $this->db->where('cat3 = "'.$cat.'"');
    $this->db->where('title like "%'.$q.'%"');
    $this->db->order_by('title','ASC');
    $query = $this->db->get()->result();
    //die(var_dump($query));
    //echo $this->db->get_compiled_select();
    return $query;
}

最佳答案

我设法通过修改 success 事件中的代码解决了这个问题。这是我是如何做到的。

改变自

success: function(data) {
                response(data);
            }

success: function(data) {

            response( $.map( data, function( item )
            {
                return{
                        label: item.title,
                        value: item.title,
                        contentid: item.contentid,
                        latitude: item.latitude,
                        longitude: item.longitude
                    }
            }));

 }

关于javascript - jQuery 自动完成 ajax 请求不显示返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376922/

相关文章:

javascript - 如何在 Aurelia 中使用屏幕键盘?

javascript - 如何获取 javascript 数组的映射,但对最后一个元素执行不同的操作?

php - 使用php将数据插入数据库中没有填充APACHE2的行

javascript - jQuery:CSS更改后何时查询新的外部高度?

javascript - 无卡顿体验和 websocket

php - 在新命令提示符下执行命令

php - 使用多个文件在php中一次访问数据库

javascript - 重新启动游戏 jQuery 函数不起作用

php - Ajax Onchange 在 foreach 循环内

jquery - 如何获取div中最高元素的高度并将该高度设置为div?