gpt4 book ai didi

jquery - CakePhp Ajax 自动完成

转载 作者:行者123 更新时间:2023-12-01 08:07:23 25 4
gpt4 key购买 nike

我正在尝试为 CakePhp 2.x 中的文本框设置 Ajax 自动完成设置。

在我看来,我有:

<?php $this->start('script'); ?>
<script type="text/javascript">
$(document).ready(function () {
var options, a;
jQuery(function() {
options = {
serviceUrl: "<?php echo $this->Html->Url(array('Controller' => 'Logs', 'action' => 'autoComplete')); ?>",
minChars: 2,
};
a = $('#LogTimeSpent').autocomplete(options);
});
});
$('#saveCust').click(function () {
alert("Test")
});
</script>
<?php $this->end(); ?>

在我的 Controller 中,我有:

function autoComplete($query) {
if ($this->request->is('ajax'))
{
$suggestions = $this->Customer->find('all', array(
'conditions' => array(
'Customer.fullName LIKE' => '%'.$query.'%'
)
));
return json_encode(array('query' => $query, 'suggestions' => $suggestions));

}
}

Customer.fullName 是一个虚拟字段(如果它影响查询)。 Firebug 目前给我一个 500 内部服务器错误。

最佳答案

我发现你必须做一些特殊的事情才能使虚拟字段发挥作用。我认为虚拟领域不是正确的选择,所以我更新了这一点。 $query 作为参数也是不正确的,我需要从 $this->params['url']['query']; 获取查询字符串。最后,我需要使用 _serialize,而不是返回 json_encode。这是我更新的 Controller ,希望这会对某人有所帮助。我在原帖中的观点是正确的。

function autoComplete() {
if ($this->request->is('ajax'))
{
$query = $this->params['url']['query'];
$this->set('query', $query);

$customer = $this->Log->Customer->find('all', array(
'conditions' => array(
'OR' => array(
'Customer.first_name LIKE' => '%'.$query.'%',
'Customer.last_name LIKE' => '%'.$query .'%'
)),
'fields' => array(
'Customer.first_name', 'Customer.last_name'
)
));

$names = array();
$id = array();
foreach ($customer as $cust) {
$fullName = $cust['Customer']['last_name'] . ', ' . $cust['Customer']['first_name'];
array_push($names, $fullName);
array_push($id, $cust['Customer']['id']);
}
$this->set('suggestions', $names);
$this->set('data', $id);
$this->set('_serialize', array('query', 'suggestions', 'data'));
}
}

关于jquery - CakePhp Ajax 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com