我已经启动了我的第一个CodeIgniter项目,并且在向控制器发出Ajax调用时遇到了很多麻烦。我在控制器中放了一个简单的echo语句,但是在浏览器中出现了控制台错误 - POST http://localhost:8888/lotto/get_results/ 404 (Not Found)
。这让我相信我没有在AJAX调用中正确引用控制器。以下是相关代码。
查看 - index.php
$(document).ready(function(){
$('#notification').hide();
retrieveValues();
});
$('.numDraws').change(function(){
retrieveValues();
});
function retrieveValues() {
if (!checkConnection()) {
$('#notification').html("<span>No internet connection available</span>");
$('#notification').slideDown(500, 'linear');
return;
} else {
$('#notification').slideUp(500, 'linear');
$('#loading').fadeIn(200);
var numOfDraws = parseInt($('.numDraws').find('option:selected').val());
if (isNaN(numOfDraws)) {
numOfDraws = "ALL";
}
$.ajax({
url: "/lotto/get_results/",
type: "post",
data: {numOfDraws:numOfDraws},
success: function (data) {
// var json = $.parseJSON(data);
// setTimeout(function(){displayResults(json)} ,1200);
alert(data);
}
});
}
}
控制器 - lotto.php
<?php
class Lotto extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('lotto_model');
}
public function index()
{
$data['title'] = "Home";
$this->load->view('templates/header', $data);
$this->load->view('lotto/index');
$this->load->view('templates/footer');
}
public function get_results($numOfDraws) {
//$data['results'] = $this->lotto_model->get_results(1);
echo "Reached the controller";
}
}
?>
同样在我的配置文件中,我有以下内容:
$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
任何帮助都会受到赞赏 - 我花了很多时间在这上面,但似乎无法弄明白。
答案 0 :(得分:3)
您遇到错误可能是因为该方法需要您未提供的参数(并且路由器无法正常工作)。试试这两件事:
1)使用内置函数创建一个url(以避免出现问题):
url: "<?php echo site_url('lotto/get_results');?>"
2)由于该方法看起来应该接收一个POST变量,而不是一个GET,你需要以正确的方式获取它:
public function get_results() {
$numOfDraws = $this->input->post('numOfDraws');
//do something with $numOfDraws here
echo $numOfDraws; // just to check the value is being passed
}
如果变量来自HTTP GET请求,则将参数传递给该方法,这不是您的情况。如果这是您的意图,则需要在AJAX调用中删除“POST”类型,并在构建AJAX URL时提供值。有些喜欢
url: "<?php echo site_url('lotto/get_results');?>/"+numOfDraws;
在这种情况下,您的方法为get_result($draws)
,参数为