我已经开始了我的第一个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';
任何帮助将不胜感激-我花了很多时间在此上,但似乎无法弄清楚。
参考方案
您可能会遇到错误,可能是因为该方法期望使用您未提供的参数(并且路由器无法正常执行调用权)。试试这2件事:
1)使用内置函数创建一个网址(以避免出现问题):
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: "<?php echo site_url('lotto/get_results');?>/"+numOfDraws;
在这种情况下,您的方法将是get_result($draws)
,其参数为
请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
PHP Laravel从另一个驱动器读取文件 - php我目前正在学习Laravel。我想知道是否有一种方法可以在Laravel中使用Storage::从另一个硬盘访问文件(使用Windows)。例如,我在驱动器C:上安装了带有Laravel的Xampp,但是我想访问网站目录之外的E:上的文件。我试过使用Storage::files('E:')和File::files('E:…