在Codeigniter中的Ajax上获取错误404

Getting error404 on Ajax in Codeigniter

本文关键字:获取 取错误 Ajax Codeigniter 中的      更新时间:2023-09-26

我的ajax代码有问题。我试图用ajax增加点击跨度内的数量,但控制台中不断出现错误-POST localhost/slots/game/lines 404(未找到(。顺便说一句,我使用Codeigniter。

这是代码:

PHP(控制器(

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Game extends CI_Controller {
    function __construct()
    {
        parent::__construct();
    }
    function index(){
    }
    function win()
    {
        $this->session->set_userdata( array('win') => $win);
        $win = $this->input->post('win');
    }
    function lines()
    {
        $this->session->set_userdata( array('lines') => $lines);
        $lines = $this->input->post('lines');
        echo $lines++;
    }
    function wager(){
        $this->session->set_userdata( array('wager') => $wager);
        $wager = $this->input->post('wager');
    }   
}
?> 

这是我的Ajax-

function lines()
{
var lines = parseInt($('#lines span').html()) + 1;
$.ajax({
        type: 'POST',
        url: base_url + 'game/lines',
        data: { lines: lines },
        success:function(response){
            if(response <= 8){
                $('#lines span').html(response);
                return true;
            }
            else return false;
        }
});
}

在我的HTML中,我称之为lines function onclick。我正在使用最新的examplep作为我的虚拟主机。我在CI中也有一个自定义路由-

$route['game/(:any(']="game/$1">
P.S.base_url在JS中被定义为变量。

正如我们在评论中发现的那样,您的问题是url_write。试试这个:

制作一个名为.htaccess的文件,并将其放在根文件夹中,即index.php文件所在的位置(注意前面的点(。写下这个代码:

RewriteEngine on
RewriteCond $1 !^(index'.php|images|robots'.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

在application/config/config.php中,索引文件选项应为空,如:

$config['index_page'] = '';

尝试更改路线:

$route['game/(:any)'] = "game/lines/$1";
refer to the codeigniter user_guide to learn more about URI routing.

顺便问一下,你在用.htaccess吗?

我的建议是把它放在GUI(view.php(中

<script>
function lines(){
    var lines = parseInt($('#lines span').html()) + 1;
    $.ajax({
            type: 'POST',
            url: '<?php echo base_url()?>game/lines',
            data: { lines: lines },
            success:function(response){
                if(response <= 8){
                    $('#lines span').html(response);
                    return true;
                }
                else return false;
            }
    });
}
</script>

要检查您的代码,请将url设置为静态,如下所示:

http://localhost/game/lines
  1. 谢谢大家帮助我
  2. 最后的解决方案是在ajax url中提供完整的路径,类似于url: 'localhost/slots/index.php/game/line'

它一定和examplep有关,因为在工作中(我们使用Linux和lighttpd('echo-base_url((;'工作得很好,所以我可以这样写我的ajax url路径:url: '<?php echo base_url(); ?> + 'game/line

希望你不会像我那样陷入困境。

如果url_write不是你的问题,并且正如你在问题后的最后一条评论中所说,你得到了500 Internal Server Error,那么这是因为你在控制器方法中的语法错误,如下所示:

$this->session->set_userdata( array('lines') => $lines); //wrong -syntax error

将其更改为以下行:

$this->session->set_userdata( array('lines' => $lines )); //Right 

我正在写你的Whole控制器,没有任何语法错误,用你的替换它,它就会工作。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Game extends CI_Controller {
   function __construct()
   {
    parent::__construct();
   }
   function index(){
   }
   function win()
   {
    $this->session->set_userdata( array('win' => $win));
    $win = $this->input->post('win');
   }
   function lines()
   {
    $this->session->set_userdata( array('lines' => $lines));
    $lines = $this->input->post('lines');
    echo $lines++;
   }
   function wager()
   {
    $this->session->set_userdata( array('wager' => $wager));
    $wager = $this->input->post('wager');
   }   
}

请按如下方式使用路线:$route['game/(:any(']="游戏/线路/$1";

并尝试发送完整的基本URL来命中ajax请求。