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



我只想确保这个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'}

在JQuery 中的ajax调用中

$.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和Ajax JQuery

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

我遇到了同样的问题,我修复了它,如下所示:在app/Config/Filter.php中进行此更改:

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

相关内容

  • 没有找到相关文章

最新更新