Ajax 在调用控制器时在 codeigniter 4 中不起作用

Ajax is not working in codeigniter 4 when call the controller

我只是想确保这个 ajax 正在调用我的控制器。但是当我点击按钮时没有任何反应。谢谢

我的看法:

<input type="text" id="phonenumber" name="phonenumber" class="form-control" placeholder="Phone number">
<button type="button" id="sendotp" name="sendotp" class="btn btn-primary btn-block">Sign Up</button>

我的 AJAX :

$(document).ready(function() {
  $('#sendotp').click(function(e) {
    e.preventDefault();

          var phonenumber = $("input[name='phonenumber']").val();

          $.ajax({
                url: '<?php echo base_url();?>/register',
                type:'post',
              dataType:'json',
                data: {
                  phonenumber:phonenumber
                },
                success: function(data) {
                }
            });
  });   
});

我的控制器:

public function register()
    {   
        if($this->request->getMethod() == 'post'){

            $phonenumber = $this->request->getPost('phonenumber');
            echo $phonenumber;
        }
        return view('register/register');
    }

我的路线:

$routes->match(['get', 'post'],'/register', 'Home::register');

在您的 javascript 中,您的成功事件是空的。所以没有发生任何事情是预期的行为。如果您要在控制器中返回视图,则必须在 javascript.

中对其进行处理

marco 回答足够了。

您还需要添加

headers: {'X-Requested-With': 'XMLHttpRequest'}

在你的 ajax 通话中 JQuery

$.ajax({
                url: '<?php echo base_url();?>/register',
                type:'post',
              dataType:'json',
               headers: {'X-Requested-With': 'XMLHttpRequest'},
                data: {
                  phonenumber:phonenumber
                },
                success: function(data) {
                }
            });

并在您的控制器中检查其 ajax 在处理任何内容之前是否先调用。

if ($this->request->isAJAX())
{
}

请参考isAjax and refer to Ajax JQuery

这是在 Codeigniter4 中处理 ajax 调用的正确方法。

我遇到了同样的问题,我是这样解决的: 在 app/Config/Filter.php 中进行此更改:

public $globals = [
        'before' => [
                'csrf' => ['except' => ['your route or api']]
        ]
];