0

我的 ajax 代码有问题。我正在尝试使用 ajax 点击时增加跨度内的数字,但在控制台中不断出现错误 - POST localhost/slots/game/lines404 (Not Found) 。顺便说一句,我使用 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');
    }   
}
?> 

这是我的阿贾克斯 -

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了 .I`m 使用最新的 xampp 作为我的虚拟主机。我在 CI 中也有一个自定义路由 -

$route['game/(:any)'] = "game/$1";
PS base_url 在 JS 中定义为变量。

4

6 回答 6

1

As we found out in the comments your problem is the url_rewrite. Try this:

Make a file called .htaccess and place it in root folder, where your index.php file is (notice the dot in front). Write this code:

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

In application/config/config.php the index file option should be empty empty like:

$config['index_page'] = '';
于 2013-05-04T12:40:34.887 回答
0

尝试更改路线:

$route['game/(:any)'] = "game/lines/$1";

refer to the codeigniter user_guide to learn more about URI routing.

顺便说一句,您使用的是 .htacess 吗?

于 2013-05-04T14:52:25.207 回答
0

我的建议是把它放在你的 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
于 2013-05-05T09:15:44.953 回答
0
  1. 谢谢大家试图帮助我。
  2. 最终的解决方案是在 ajax url 中提供完整的路径,就像这样url: 'localhost/slots/index.php/game/line'

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

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

于 2013-05-05T13:54:49.800 回答
0

请使用如下路线: $route['game/(:any)'] = "game/lines/$1";

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

于 2018-10-10T06:29:17.310 回答
0

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

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

将其更改为以下行:

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

我正在编写你的整个控制器,没有任何语法错误,用你的替换它,它会起作用。

<?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');
   }   
}
于 2018-10-10T06:09:23.050 回答