【问题标题】:How to use ajax in codeigniter 4如何在codeigniter 4中使用ajax
【发布时间】:2020-05-23 21:15:13
【问题描述】:

我正在使用 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');

?>

【问题讨论】:

    标签: php jquery ajax codeigniter codeigniter-4


    【解决方案1】:

    这里是ajax的示例代码。 (确保您已经为 search url 定义了路由/控制器方法)

    $.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。此外,您需要在方法中返回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']);
            }  
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2013-07-05
      • 1970-01-01
      • 2018-12-31
      • 2021-05-27
      • 2022-01-27
      相关资源
      最近更新 更多