私は、自動補完のようなテーブルからのデータからの入力を提案するcakephpを取得しようとしています。私はいくつかの他の人々がこれをやった方法についていくつかの読書をしましたが、まだそれを理解することはできません。現在、私のコントローラがAjaxリクエストを待っているたびに常にfalseであるようです。私は間違って何をしているのかわからないコンソールからエラーが出ない。私はif($ this-> request->( '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>
あるとIDは、ユーザーが入力し何を私から提案したいものです。
ありがとう、私はこれらの変更を加えましたが、私はsearch.ctpがデータを正しく送信していないと信じています。 'ajax')をコントローラに追加します。だからこそ私はPRを使ってそれがそこに入ったかどうかを調べようとしていたのです。 –
@ mark.nz - 私はどのように私はajaxを検出して私の答えを更新しました。 – styks
新しいAjax検出のコードはどこに置くのですか? –