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