【问题标题】:Passing checkbox checked from jQuery to PHP in CodeIgniter在 CodeIgniter 中将选中的复选框从 jQuery 传递到 PHP
【发布时间】:2013-01-22 19:08:12
【问题描述】:

我正在编写一个 PHP 自我评估表,该表有 5 个问题类别,每个类别 10 个问题。在应用程序的开头,我有 5 个复选框来表示这些类别,它们会被自动选中。这个想法是,每当用户取消选中一个类别时,该类别的问题会立即从表单中消失,当他们再次检查时,它们会回来。在 jQuery 和 AJAX 的帮助下应该可以实现的目标。

我使用 CodeIgniter 的 form_helper 制作了复选框:

for($i = 1; $i<=5; $i++) {
$this->formapp_model->printCatName($i);
$data = array('name'=>'category$i', 'id'=>'category$i', 'value'=>'$i', 'checked'=>TRUE);
echo form_checkbox($data);
}

我有一个功能可以在类别 ID 之后从数据库中打印该类别的所有 10 个问题,当我按原样发布它们时效果很好:

$this->formapp_model->printCategory(1);
$this->formapp_model->printCategory(2);
$this->formapp_model->printCategory(3);
$this->formapp_model->printCategory(4);
$this->formapp_model->printCategory(5);

使用这个帮助: Passing whether a checkbox is checked, via jQuery, to PHP 我能够为 jQuery 收集它,我需要类似的东西

var category1 = $('#category1:checked').val();

为了检查复选框是否已被选中。我也试过了

var category1 = $('#category1:checked').post();

因为使用 post 来让 PHP 识别它似乎是合乎逻辑的。

对于打印选择类似

if (isset($_POST['category 1'])) { $this->formapp_model->printCategory(1); } else { echo "This category is not selected."; }

我试过了,但是 PHP 无法识别 jQuery 给出的消息,这意味着无论复选框是否被选中,类别的问题都会永久消失。我检查了echo var_export($_POST); 并注意到所有 jQuery 打印出来的是:array ()。上面提到的问题非常有用,但错过了一些我需要让它工作的信息。提问者还使用数组而不是单独的变量,所以我不知道如何正确编辑它。

我是 jQuery 和 AJAX 的完全新手,所以我很难掌握我需要什么才能让 jQuery 和 PHP 按照我描述的方式进行动态通信。我在 stackoverflow 上跑来跑去寻找类似的案例,但没有一个完全满足我的需要。但是,如果这是一个重复的问题,我深表歉意。感谢任何提供帮助的人!

【问题讨论】:

    标签: php jquery ajax codeigniter checkbox


    【解决方案1】:

    PHP 是服务器端,您需要在客户端出现/消失问题,这意味着您希望使用 jQuery 本身(或常规 js,但由于您已经加载 jQuery,因此使用库本身会更快)。

    说实话,我并没有真正关注你的观点是如何运作的,所以我只会提供一些基本代码来给你这个想法。您创建复选框和问题,为每个问题提供唯一 ID。然后在复选框的单击方法中确定要显示的问题。

    HTML:

    <div id="checkboxes">
        <input type="checkbox" id="box1" class="check" checked="checked"/>
        <input type="checkbox" id="box2" class="check" checked="checked" />
        <input type="checkbox" id="box3" class="check" checked="checked" />
        <input type="checkbox" id="box4" class="check" checked="checked" />
        <input type="checkbox" id="box5" class="check" checked="checked" />
    </div>
    <div id="question1" class="question">
        <p>Question 1</p>
    </div>
    <div id="question2" class="question">
        <p>Question 2</p>
    </div>
    <div id="question3" class="question">
        <p>Question 3</p>
    </div>
    <div id="question4" class="question">
        <p>Question 4</p>
    </div>
    <div id="question5" class="question">
        <p>Question 5</p>
    </div>
    

    jQuery:

    $(".check").on("click",function(){
        var id = $(this).attr("id");
        var id2 = id.substr(id.length -1);
        var question = "question"+id2;
        if($(this).is(":checked"))
        {
            $("#"+question).css("display","block");
        } else {
            $("#"+question).css("display","none");
        }
    });
    

    演示:http://jsfiddle.net/calder12/taSPX/1

    【讨论】:

    • 太好了,很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多