我一直試圖讓cakephp建議從我的表中提取數據,如自動完成。我已經做了一些關於其他人如何做到這一點的解讀,但仍然無法弄清楚。目前看來,每當我的控制器正在等待一個Ajax請求並且它總是假的。控制檯沒有出現錯誤,我不確定我做錯了什麼。我嘗試刪除if($ this-> request-> is('ajax'))語句,但後來發現有關它的錯誤無法發出標題。 這是我在InvoicesController中的搜索功能,我從別人的例子中獲取代碼但未能實現它。CakePHP 3自動完成AJAX響應
public function search()
{
if ($this->request->is('ajax')) {
$this->autoRender = false;
pr('b');
$name = $this->request->query['term'];
$results = $this->Invoices->find('all', [
'conditions' => [ 'OR' => [
'id LIKE' => $id . '%',
]]
]);
$resultsArr = [];
foreach ($results as $result) {
$resultsArr[] =['label' => $result['full_name'], 'value' => $result['id']];
}
echo json_encode($resultsArr);
}
}
這裏是我的search.ctp
<?php use Cake\Routing\Router; ?>
<?php echo $this->Form->input('id', ['type' => 'text']);?>
<script>
jQuery('#id').autocomplete({
source:'<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>',
minLength: 1
});
</script>
謝謝我將閱讀文檔,我做了這些更改,但我相信我的search.ctp沒有正確發送數據,因爲我認爲它實際上並沒有超過is( 'ajax')在控制器中。這就是爲什麼我試圖使用公關來看看它是否曾經在那裏。 –
@ mark.nz - 我更新了我的答案以及如何檢測ajax。 – styks
我會在哪裏放置新的ajax檢測代碼? –