【问题标题】:Updating DB with AJAX when checkbox is checked选中复选框时使用 AJAX 更新数据库
【发布时间】:2013-11-07 10:41:41
【问题描述】:

单击复选框时,我正在尝试将数据库中的一个值从 0 更新为 1。我已经经历了很多关于这个主题的例子,但我似乎无法理解我做错了什么。我对此很陌生,非常感谢一些帮助。

表格:

            <form method='post'>
                <table>                             
                    <thead>                           
                    <th><div style="border-bottom: 1px solid #FFF; width:746px;"><div class="headline1">Registrations under preparation</div></div></th>
                    </thead>
                </table>
                <table class="width_70">   
                    <thead>                           
                    <th class="headline1">Student</th>
                    <th class="headline1">Company</th>
                    <th class="headline1">Date</th>
                    <th class="headline1">P</th>
                    <th class="headline1">V</th>
                    <th class="headline1">K</th>
                    </thead>
                   <?foreach($data_array_praktikant_info as $value){if(($value[1]->studentApproved == 1) xor ($value[1]->companyApproved == 1)) {
                    ?><tr><?                         
                    ?><td><? echo $value[0]->f_name . ' ' . $value[0]->l_name;?></td>
                        <td>Dania</td>
                        <td><? echo $value[1]->approvedDate; ?></td>
                        <td><div class="approve"><input disabled  <? if($value[1]->studentApproved == 1){?>checked<?} ?> id="7" type="checkbox"><label for="7"><span></span></label></div></td>
                        <td><div class="approve"><input disabled  <? if($value[1]->companyApproved == 1){?>checked<?} ?>  id="8" type="checkbox"><label for="8"><span></span></label></div></td>
                        <td><div class="approve"><input class="approveME" value="<? $value->application_id ?>" onclick="checkCheckboxState();" <? if($value[1]->koordinatorApproved == 1){?>checked<?} }}?> id="9" type="checkbox"><label for="9"><span></span></label></div></td>
                    </tr>
                </table>
            </form>

AJAX:

function checkCheckboxState() {

    if ($('.approveME').is(':checked')) {
        var application_id = $('.approveME').first().attr( "value" );

        //tried this aswell// 

        var application_id = $('.approveME').val();

        $.ajax({
            type: "POST",
            url: "approve.php",
            data: {id : application_id},
            success: function(msg) {
                alert("Data saved:" + msg);
            }
        });
    }
    ;
}

PHP: (approve.php)

 <?

 global $wpdb;

 $application_id = $_POST['application_id'];

 $date_current = Date('Y-m-d H:i:s');

 $fieldarray = array('koordinatorApproved' => 1, 'updated' => $date_current);

 $where = array('application_id' => $application_id);

 $wpdb->update('application', $fieldarray, $where);

 ?>

【问题讨论】:

  • 您的 post 变量是 id 但在 php 中您想将其用作 $_POST['application_id'] ,那是您的问题!

标签: php jquery ajax database


【解决方案1】:

$_POST["application_id"] 始终为空,因为您从 AJAX 将字段作为 $_POST["id"] 传递。

在你的 PHP 中改变这个:

$application_id = $_POST["id"];

或者在你的 Javascript 中使用这个:

data: {application_id: application_id}

【讨论】:

    【解决方案2】:

    请使用以下更改,

    在approve.php文件中,更改
    $application_id = $_POST['application_id'];进入 $application_id = $_POST['id'];

    checkCheckboxState 函数删除下面提到的条件,使其像开/关一样切换,否则仅在复选框被选中时触发

    if ($('.approveME').is(':checked')) {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2014-05-10
      • 2016-11-30
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多