我在从Controller获取数据时遇到问题,我已经尝试了这里的所有解决方案,但都是一样的。。
当我点击按钮时,它显示404未找到,如果我将URL更改为包含控制器类名+函数名的完整URL,它显示403
这是我的视图代码:
<h2>Quiz</h2>
<script type="text/javascript">
$(document).ready(function(){
var BASE_URL = '<?php echo base_url(); ?>';
$('#show').click(function(e){
console.log(BASE_URL);
$.ajax({
url: BASE_URL + "Quiz/get_item",
dataType:'text',
type:"POST",
success: function(result){
var obj = $.parseJSON(result);
console.log(obj);
}
})
})
});
</script>
<button id="show">Show Cutomers</button>
<div id="customers-list"></div>
<p>Our first multi-page CodeIgniter application! Each page has its own controller and view!</p>
这是我的控制器代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Quiz extends CI_Controller {
var $TPL;
public function __construct()
{
parent::__construct();
$this->load->model('Quiz_data');
// Your own constructor code
}
function show_customers()
{
$query = $this->db-> query("SELECT * FROM quiz ORDER BY id;");
$this->TPL['listing'] = $query->result_array();
$this->template->show('quiz', $this->TPL);
}
public function index()
{
$this->template->show('quiz', $this->TPL);
}
public function get_item(){
$data = $this ->Quiz_data->get_data();
echo json_encode($data);
}
}
这是我的型号代码:
<?php
class Quiz_data extends CI_Model {
public function get_data()
{
$query = $this->db->get('quiz');
return $query -> result_array();
}
}
的输出是什么
console.log(BASE_URL);
有一段时间没有处理CI,但它过去需要在URL中使用/index.php/。尝试:
url: BASE_URL + "/index.php/quiz/get_item",
尽管控制器名称需要以大写字母开头,但它不需要在URL中以这种方式调用。
确保url: BASE_URL + "Quiz/get_item"
提供了正确的URL。
var BASE_URL = '<?php echo base_url(); ?>';
可能不提供尾部斜杠,您将无法获得正确的url。
尝试用以下内容更新您的通话:
url: BASE_URL + "/Quiz/get_item",