gpt4 book ai didi

php - 使用 CodeIgniter 对 Controller 的 AJAX 调用不成功

转载 作者:行者123 更新时间:2023-12-01 03:45:17 26 4
gpt4 key购买 nike

我已经开始了我的第一个 CodeIgniter 项目,但在向我的 Controller 进行 Ajax 调用时遇到了很多麻烦。我在 Controller 中放置了一个简单的 echo 语句,但在浏览器中收到控制台错误 - POST http://localhost:8888/lotto/get_results/404 (Not Found)。这让我相信我没有在 AJAX 调用中正确引用 Controller 。下面是相关代码。

查看-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);
}
});
}

}

Controller -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';

任何帮助将不胜感激 - 我在这方面花了很多时间,但似乎无法弄清楚。

最佳答案

您遇到错误可能是因为该方法需要您未提供的参数(并且路由器无法正确执行调用)。尝试以下两件事:

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) ,带有参数

关于php - 使用 CodeIgniter 对 Controller 的 AJAX 调用不成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com