jquery- ajax向php发布一个null变量

时间:2016-08-17 06:59:52

标签: javascript php jquery ajax

查看:

<table>
<tr>
<td id="percentage">Percentage:&nbsp; <?php echo $percentage; ?> %</td>
</tr>
</table>

 <div class="box-footer" style="float: right">
        <a href="<?php echo base_url(); ?>student/Examinations" class="btn btn-primary" style="font-size: 20px;" id="submit">Submit</a>
    </div>

<script>
    $(document).ready(function () {
        var percentage = $("#percentage").text();
        console.log(percentage);                //Percentage:  28.57 %
        $("#submit").click(function () {
            $.ajax({
                type: 'POST',
                url: base_url + "student/Examinations",
                data: {percentage: percentage},
                success: function () {

                }
            });
        });
    });
</script>

控制器:

class Examinations extends CI_Controller {
 function __construct() {
        parent::__construct();
}
 public function index() {
        $percentage = $_POST["percentage"];
        var_dump($percentage);           // var_dump null
}
}

我的问题:javascript变量(百分比)传递控制器,而var_dump为空为什么?请帮帮我.......................... ...........

3 个答案:

答案 0 :(得分:0)

我自己不是代码点火器的用户,但使用其他框架,您最好使用请求对象。

我很快就仔细阅读了代码点火器文档,显然你应该这样做:

$percentage = $this->input->post('percentage');

答案 1 :(得分:0)

它表现得像那样,因为你在这里做了两件事。它看起来像是:

  • 您点击了id="submit"
  • 的链接 执行
  • $(#submit).click()
    • 执行参数percentage的ajax调用
    • 没有处理响应的ajax调用结束(成功的空函数,所以你甚至看不到你的click事件的结果)
  • 网页浏览器继续正常运行 - 点击后点击链接,然后使用 "<?php echo base_url(); ?>student/Examinations"参数
  • 转到网址:percentage

如果您想发送参数,只需修改您的href:"<?php echo base_url(); ?>student/Examinations?percentage=sample_value"并检入目标脚本$_GET['percentage']

答案 2 :(得分:0)

你没有阻止执行锚标记,你必须预防标记事件

$(document).ready(function () {
    $("#submit").click(function (e) {
       e.preventDefault();
        $.ajax({
            type: 'POST',
            url: base_url + "student/Examinations", // or you can take $("#submit").attr('href');
            data: {percentage: $("#percentage").text()},
            success: function(data) {
                console.log(data);
            }
        });
        return false;
    });
});