用逗号分隔的 jQuery 自动完成文本在 CodeIgniter 中不起作用
Posted
技术标签:
【中文标题】用逗号分隔的 jQuery 自动完成文本在 CodeIgniter 中不起作用【英文标题】:jQuery autocomplete text seperated with comma not working in CodeIgniter 【发布时间】:2018-09-27 00:41:55 【问题描述】:代码:search_json.php
<?php
function get_data()
$ci =& get_instance();
$ci->db->select('*');
$ci->db->from('top_menu');
$ci->db->order_by('menu_name');
$query = $ci->db->get();
$result = $query->result_array();
foreach($result as $row)
$menu[] = array(
'id' => $row["id"],
'label' => $row["menu_name"]
);
return json_encode($menu);
echo "<pre>";
print_r(get_data());
echo "</pre>";
?>
index.php
<script>
$(function()
function split( val )
return val.split( /,\s*/ );
function extractLast( term )
return split( term ).pop();
$( "#tags" )
.on( "keydown", function( event )
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).autocomplete( "instance" ).menu.active )
event.preventDefault();
)
.autocomplete(
source: function( request, response )
$.getJSON( "<?php echo base_url(); ?>user/search",
term: extractLast( request.term )
, response );
,
search: function()
var term = extractLast( this.value );
if ( term.length < 1 )
return false;
,
focus: function()
return false;
,
select: function( event, ui )
var terms = split( this.value );
terms.pop();
terms.push( ui.item.value );
terms.push( "" );
this.value = terms.join( ", " );
return false;
);
);
</script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="ui-widget">
<label for="tags">Tags</label>
<input type="text" class="form-control1" id="tags" name="tags"/>
</div>
控制器:user.php
public function search()
$this->load->view('user/search_json');
在这段代码中,我创建了一个 json 格式文件(即 search_json.php),我想在 index.php 中实现它。 search_json.php 文件完美运行,数据格式正确,但是当我在标签输入字段中写入内容时,它什么也没显示。那么,我该如何解决这个问题呢?
谢谢!
【问题讨论】:
调试器控制台是否出现错误? 没有错误显示@MathieuDormeval 你的user/search_json
被叫到了吗?
不,@MathieuDormeval 什么也没发生。但是,如果我创建一个单独的文件,那么它的工作
您可能需要设置标题。 CodeIgniter 将 JSON 服务为 text/html
【参考方案1】:
首先,<?php echo base_url(); ?>user/search
可以而且应该像<?php echo base_url('user/search'); ?>
一样使用。 (虽然我主要是 <?= base_url().'user/search'; ?>
:) 有趣的是,我不是唯一一个使用它“错误”的人......
如果我有 ajax 控制器,我倾向于这样设置输出:
$this
->output
->set_content_type('application/json')
->set_output(json_encode($return)); // Where $return is an array
所以在你的情况下,我猜你应该将 json php 文件作为部分加载并将输出设置为部分内容:
public function search()
$return = $this->load->view('user/search_json', '', true);
$this
->output
->set_content_type('application/json')
->set_output($return);
【讨论】:
以上是关于用逗号分隔的 jQuery 自动完成文本在 CodeIgniter 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
我初学matlab,现在需要完成用MATLAB读取TXT文本数据存于结构体,文本数据以逗号作为分隔。