我正在尝试使用Jquery自动完成来显示我在cakephp中的表中的数据。我可以使用标签自动完成工作,但我无法显示表格中的数据。在正确返回的情况下搜索表中的相似数据的功能,但我不完全确定它是否正确地将其传递给自动完成脚本。我仍然很新,有些帮助或提示将不胜感谢,谢谢:D。
这是我在InvoicesController.php中的搜索功能
$( "#salary" ).click(function() {
$( "#salary" ).val( $("#salary").val().replace(/,/g, ''));
});
$( "#salary" ).blur(function() {
$( "#salary" ).val( addCommas($( "#salary" ).val());
});
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
这是我的search.ctp中的代码
public function search()
{
$this->loadComponent('RequestHandler');
if ($this->request->is('ajax'))
{
$name = $this->request->query['term'];
$resultArr = $this->Invoices
->find()
->where(
['Invoices.id LIKE' => ($name . '%')],
['Invoices.id' => 'string']
);
$resultsArr = [];
foreach ($resultArr as $result)
{
$resultsArr[] = (strval($result['id']));
}
$this->set('resultsArr', $resultsArr);
// This line is what handles converting your array into json
// To get this to work you must load the request handler
$this->set('_serialize', ['resultsArr']);
}
}
这是函数返回的内容以及自动完成下拉菜单中显示的内容。
使用testTags数组
应该是这样的视图中的视图是什么样的。
<?php use Cake\Routing\Router; ?>
<?php echo $this->Form->input('id', ['type' => 'text']); ?>
<script>
var testTags = ['52332', '56346', '5734'];
var tags = '<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>'
jQuery('#id').autocomplete({
source: tags,
minLength: 1
});
</script>
答案 0 :(得分:0)
<?php use Cake\Routing\Router; ?>
<?php echo $this->Form->input('id', ['type' => 'text']); ?>
<script>
var testTags = ['52332', '56346', '5734'];
var tags = $.post(url:'<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>');
jQuery('#id').autocomplete({
source: tags,
minLength: 1
});
</script>
尝试使用Jquery $ .post或$ .get通过ajax获取数据