如何在 codeigniter 4 中使用 ajax
How to use ajax in codeigniter 4
我正在使用 codeigniter-4 版本并尝试在导航栏中自动搜索。我正在尝试使用 ajax 将 post 方法中的数据发送到控制器中。但它不起作用。并且 codeigniter 4 没有描述 ajax 的细节。在我的代码示例下方
输入框是-
<input class="form-control mr-sm-2" type="search" placeholder="<?= lang('nav.search'); ?>" aria-label="Search" name='s' id="seachBox">
ajax代码为-
$.ajax({
url:<?= base_url('search'); ?>,
headers:{'X-Requested-With':'XMLHttpRequest'},
data:{query:query},
success:function(data){
alert(data);
}
});
我的控制器是 -
<?php
class Search extends BaseController
{
public function __construct()
{
helper(['common_helper','aws_helper']);
}
public function index(){
echo 'string';
}
}
?>
路线是-
<?php
$routes->get('/search', 'Search::index');
?>
这里是ajax的示例代码。 (确保您已经为 search url 定义了 route/controller 方法)
$.ajax({
url:<?php echo base_url('search'); ?>,
type: 'post',
dataType:'json',
data:{query:query},
success:function(data){
alert(data);
}
});
CI4获取请求数据的代码
if ($this->request->isAJAX()) {
$query = service('request')->getPost('query');
var_dump($this->request->getPost('query'));
}
此外,如果您没有在成功时重新加载页面,请确保在每次请求时更新 csrf token
。此外,您需要在方法中添加 return csrf
令牌。
所以在那种情况下你的方法看起来像 -
if ($this->request->isAJAX()) {
$query = service('request')->getPost('query');
//var_dump($this->request->getPost('query'));
return json_encode(['success'=> 'success', 'csrf' => csrf_hash(), 'query ' => $query ]);
}
所以在这种情况下,您的 ajax 代码将类似于 -
$.ajax({
url:<?php echo base_url('search'); ?>,
type: 'post',
dataType:'json',
data:{query:query},
success:function(data){
var result = JSON.parse(data);
$("input[name='csrf_test_name']").val(result['csrf']);
}
});
我正在使用 codeigniter-4 版本并尝试在导航栏中自动搜索。我正在尝试使用 ajax 将 post 方法中的数据发送到控制器中。但它不起作用。并且 codeigniter 4 没有描述 ajax 的细节。在我的代码示例下方 输入框是-
<input class="form-control mr-sm-2" type="search" placeholder="<?= lang('nav.search'); ?>" aria-label="Search" name='s' id="seachBox">
ajax代码为-
$.ajax({
url:<?= base_url('search'); ?>,
headers:{'X-Requested-With':'XMLHttpRequest'},
data:{query:query},
success:function(data){
alert(data);
}
});
我的控制器是 -
<?php
class Search extends BaseController
{
public function __construct()
{
helper(['common_helper','aws_helper']);
}
public function index(){
echo 'string';
}
}
?>
路线是-
<?php
$routes->get('/search', 'Search::index');
?>
这里是ajax的示例代码。 (确保您已经为 search url 定义了 route/controller 方法)
$.ajax({
url:<?php echo base_url('search'); ?>,
type: 'post',
dataType:'json',
data:{query:query},
success:function(data){
alert(data);
}
});
CI4获取请求数据的代码
if ($this->request->isAJAX()) {
$query = service('request')->getPost('query');
var_dump($this->request->getPost('query'));
}
此外,如果您没有在成功时重新加载页面,请确保在每次请求时更新 csrf token
。此外,您需要在方法中添加 return csrf
令牌。
所以在那种情况下你的方法看起来像 -
if ($this->request->isAJAX()) {
$query = service('request')->getPost('query');
//var_dump($this->request->getPost('query'));
return json_encode(['success'=> 'success', 'csrf' => csrf_hash(), 'query ' => $query ]);
}
所以在这种情况下,您的 ajax 代码将类似于 -
$.ajax({
url:<?php echo base_url('search'); ?>,
type: 'post',
dataType:'json',
data:{query:query},
success:function(data){
var result = JSON.parse(data);
$("input[name='csrf_test_name']").val(result['csrf']);
}
});