CodeIgniter 4 数据提交返回页面404
CodeIgniter 4 data submission returning page 404
我刚开始使用 CodeIgniter 4,它与 CI 非常不同 3. 提交表单时,可以使用 PHP post 或 ajax post 请求,都返回 404 页。
$('#formData').on('submit', function(e){
e.preventDefault();
var FormData = $(this).serialize();
$.ajax({
type: 'post',
dataType:'json',
url: '<?= base_url("/send-email") ?>',
data: FormData,
success: function(res){
console.log(res)
}
})
})
<form id="formData" method="post">
<div class="form-group row">
<div class="col-md-6 mb-4 mb-lg-0">
<input
type="text"
class="form-control"
placeholder="First name"
name="firstname"
/>
</div>
<div class="col-md-6">
<input
type="text"
class="form-control"
placeholder="Last name"
name="lastname"
/>
</div>
</div>
<div class="form-group row">
<div class="col-md-6 mr-auto">
<input type="submit" id="send_email" class="btn btn-block btn-primary text-white py-3 px-5" value="Send Message">
</div>
</div>
</form>
PHP代码
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class DefaultController extends BaseController
{
public function send_email(){
if($this->request->isAJAX){
print_r($_POST);
}
}
}
我从 BaseController
加载了 form
助手。我想知道是否需要配置任何其他设置才能使其工作。我完全不知道为什么。
好的,我已经找到错误的原因了。为了发送任何请求,我必须在我想首先使用的特定方法的路由中指定它。就我而言,我正在尝试发送 post 请求。所以我的路由应该是这样的:
$routes->post('/send-email', 'DefaultController::send_email');
基于文档 https://codeigniter.com/user_guide/incoming/routing.html#using-http-verbs-in-routes
我刚开始使用 CodeIgniter 4,它与 CI 非常不同 3. 提交表单时,可以使用 PHP post 或 ajax post 请求,都返回 404 页。
$('#formData').on('submit', function(e){
e.preventDefault();
var FormData = $(this).serialize();
$.ajax({
type: 'post',
dataType:'json',
url: '<?= base_url("/send-email") ?>',
data: FormData,
success: function(res){
console.log(res)
}
})
})
<form id="formData" method="post">
<div class="form-group row">
<div class="col-md-6 mb-4 mb-lg-0">
<input
type="text"
class="form-control"
placeholder="First name"
name="firstname"
/>
</div>
<div class="col-md-6">
<input
type="text"
class="form-control"
placeholder="Last name"
name="lastname"
/>
</div>
</div>
<div class="form-group row">
<div class="col-md-6 mr-auto">
<input type="submit" id="send_email" class="btn btn-block btn-primary text-white py-3 px-5" value="Send Message">
</div>
</div>
</form>
PHP代码
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class DefaultController extends BaseController
{
public function send_email(){
if($this->request->isAJAX){
print_r($_POST);
}
}
}
我从 BaseController
加载了 form
助手。我想知道是否需要配置任何其他设置才能使其工作。我完全不知道为什么。
好的,我已经找到错误的原因了。为了发送任何请求,我必须在我想首先使用的特定方法的路由中指定它。就我而言,我正在尝试发送 post 请求。所以我的路由应该是这样的:
$routes->post('/send-email', 'DefaultController::send_email');
基于文档 https://codeigniter.com/user_guide/incoming/routing.html#using-http-verbs-in-routes