BootStrap模态+ JS / AJAX复选框表单提交

时间:2014-04-03 06:39:07

标签: javascript ajax forms checkbox

我花了近一天的时间试图自己解决这个问题,但我仍然是AJAX / JS的新手并且失败所以我会感激任何指针。

我有一个复选框列表,这些复选框位于模态(bootstrap)中,所有复选框都具有相同的名称。我希望用户单击相关的复选框并在不重定向页面的情况下提交。我一直试图通过JS和AJAX来做到这一点,但显然我缺少了一些东西。

BS模态内部的形式如​​下。

<form method="POST" id="hmis105">
<div class="checkbox">
    <label><input type="checkbox" name="reporting[]" value="80">Leishmaniasis</label>
</div>
<div class="checkbox">
    <label><input type="checkbox" name="reporting[]" value="81">Lymphatic Filariasis (hydrocele)</label>
</div>
<div class="checkbox">
    <label><input type="checkbox" name="reporting[]" value="82">Lymphatic Filariasis (Lympoedema)</label>
</div>
<div class="checkbox">
    <label><input type="checkbox" name="reporting[]" value="83">Urinary Schistosomiasis</label>
</div>
<input type="hidden" name="ConsultationID" value="{$ConsultationID}" />
<button class="btn btn-primary" id="btnSubmit">Save</button>

我已经尝试了很多Javascript方法,但这是我现在尝试使用的方法。

$(document).ready(function () {
$("#btnSubmit").click(function(){
    var hmis = new Array();
    $('input[name="reporting[]"]:checked').each(function() {
        hmis.push(this.value);
    });
var ConsultationID = $(this).attr('ConsultationID');
    $.ajax({
        url: "ajax/ajax_add_reporting_hmis105.php",
        type: "POST",
        datatype: "json",
        data: {hmis : hmis, ConsultationID : ConsultationID},
    });
});

});

最后这是ajax文件。我省略了php开放标签和数据库连接信息。 $ db只创建一个新的数据库连接

foreach ($_POST['hmis'] as $report) {
    $now = date('Y-m-d H:i:s');
    $data = array(
        'consultationId' => $_POST['ConsultationID'],
        'diseaseId' => $report,
        'EntryTime' => $now
        );
    $reported = $db->insertRow("database", "table", $data);
}

老实说,在这一点上,我正撞在墙上,我正在重读那些让我更加困惑的事情&gt; :(感谢您的时间!

1 个答案:

答案 0 :(得分:0)

在服务器端,POST参数hmis只是一个字符串。要从中提取数据,您需要使用json_decode

foreach (json_decode($_POST['hmis']) as $report) {
   // ...