我只是使用Codeigniter作为框架为我的酒店制作一个简单的房间预订系统。在我的本地主机中,控制器及其方法按预期工作,但是当我将文件上传到我的测试服务器时,我的一个控制器变得无法访问。它既不显示加载的视图页面,也不显示错误。我也尝试过像 www.mydomain.com/testing/index.php/room_booking 和 www.mydomain.com/testing/index.php/room_booking/post_action 这样的 url,但没有显示任何内容,然后我尝试使用 die("我的代码未执行"(,但它也没有打印 die。所以这让我发疯,我度过了一整天。
我的控制器是:
header("Access-Control-Allow-Origin: *");
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class room_booking extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->model('dbmodel');
$this->load->model('api_model');
$this->load->model('dashboard_model');
$this->load->model('booking_room');
$this->load->helper('url');
$this->load->helper(array('form', 'url'));
$this->load->library("pagination");
}
public function index() {
$this->load->view('template/header');
$this->load->view('template/imageDiv');
$this->load->view('template/reservation_template');
//$this->load->view('login/test');
$this->load->view('template/footer');
}
function post_action() {
$this->load->helper('availableroom');
die('here i used die function for test');
if ($_POST) {
$data['abc'] = array(
'checkin' => $_POST['checkin'],
'checkout' => $_POST['checkout'],
'adult' => $_POST['adult'],
'child' => $_POST['child'],
'hotelId' => $_POST['hotelId'],
'title' => $_POST['title']
);
$this->session->set_userdata($data['abc']);
$hotel = $_POST['hotelId']; // form top it got hotel name
$hotels = $this->dashboard_model->get_hotel_id($hotel);
if (!empty($hotels)) {
foreach ($hotels as $hotelData) {
$hotelId = $hotelData->id;
}
} else {
$hotelId = $_POST['hotelId'];
}
$data['query'] = $this->dashboard_model->booking_room($hotelId);
$data['json'] = json_encode($data['query']);
$this->load->view('ReservationInformation/room_booking', $data);
} else {
$this->load->view('ReservationInformation/room_booking_empty_view');
}
}
}
我在这里做错了吗?在post_action方法中,我从 ajax 调用传递了一个值。如何在服务器中解决它?
你的代码看起来是正确的。我想您可能忘记设置基本网址:
// application/config/config.php
$config['base_url'] = 'www.mydomain.com/testing';
这只是一个猜测(由于特权而没有将其作为评论发布(。
控制器类名应该以Uppercase letter
开头,所以room_booking
应该Room_booking
在此处检查注释:https://ellislab.com/codeigniter/user-guide/general/controllers.html#what