javascript - 将变量从 AJAX 发送到 PHP 时出错

标签 javascript php jquery ajax

我正在使用数据库中的数据生成表行。

下面是我的代码:

<table class="table table-hover" id="dashEventTable">
    <thead>
        <tr>
            <th>Created at</th>
            <th>Seminar Name</th>
            <th>Quota</th>
            <th>Location</th>
            <th>Option</th>
            <th style="display:none"></th>
        </tr>
    </thead>
    <tbody script="javascript">
    <?php
    $one = 1;
    $Lihat="SELECT * FROM event where status = '$one'";
    $Tampil = mysqli_query( $db, $Lihat );
        while ( $hasil = mysqli_fetch_array ( $Tampil ) ) {
            $id_event = ( $hasil['id_event'] );
            $nama_event =  ( $hasil['nama_event'] );
            $lokasi =  ( $hasil['lokasi'] );
            $kuota  =  ( $hasil['kuota'] );
            $created_at =  ( $hasil['created_at'] );
            { ?>
        <tr>
            <td class="created_at"><?php echo date( 'Y-m-d h:i a', strtotime( $created_at ) ); ?></td>
            <td class="event_name"><?php echo "$nama_event"; ?></td>
            <td class="kuota"><?php echo "$kuota"; ?></td>
            <td class="lokasi"><?php echo "$lokasi"; ?></td>
            <td>
                <a class="btn btn-xs btn-danger btn_delete" data-toggle="modal" href="#deleteDashEvent"><i class="fa fa-trash"></i></a>
            </td>
            <td class="event_id" style="display:none"><?php echo "$id_event"; ?></td>
        </tr><?php }
        } ?>
    </tbody>
</table>

现在,当我单击行内的按钮时,它会执行两件事,第一件事是执行此 JavaScript 函数:

$( ".btn_delete" ).click(function() {
    var $row = $( this ).closest( "tr" ); // Find the row
    var event_id = $row.find( ".event_id" ).text();
    console.log( event_id );
    $.ajax({
        url: "contain_data.php",
        method: 'post',
        data: {
            'send': event_id
        },
        success: function() {
            alert( event_id );
        }
    });
});

从警报和控制台日志中,我看到我获得了该行的事件 ID 的正确 ID。然后数据将被发送到上面的 PHP 文件,PHP 内部是这样的:

<?php
if ( isset( $_POST['send'] ) ) {
    $id_event = $_POST['send'];
} else {
    echo "The data has not been received!";
}

它做的第二件事是转到此 div 进行删除确认:

<form action="admin_delete_event.php" enctype="multipart/form-data" id="event_delete_row" method="post" name="delete_event_row">
    <div class="modal fade" id="deleteDashEvent">
        <div class="modal-dialog modal-sm" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button aria-label="Close" class="close" data-dismiss="modal" type="button">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title">Delete Confirmation</h4>
                </div>
                <div class="modal-body">
                    <p>Are you sure want to delete this event?</p>
                </div>
                <div class="modal-footer">
                    <a class="btn btn-default" data-dismiss="modal" href="#">Batal</a>
                    <button class="btn btn-primary btn_confirm_delete" name="admin_delete_event" type="submit">DELETE</button>
                </div>
            </div>
        </div>
    </div>
</form>

当单击“删除”按钮时,它将转到此 PHP 文件:

<?php
session_start();
include( "config.php" );

if ( isset( $_POST['admin_delete_event'] ) ) {
    include( "contain_data.php" );

    $zero = 0;

    $delete_query = "UPDATE event, jadwal_acara, waktu_pendaftaran
        SET event.status = '$zero', jadwal_acara.status = '$zero', waktu_pendaftaran.status = '$zero'
        WHERE event.id_event = '$id_event'
        AND jadwal_acara.id_event = '$id_event'
        AND waktu_pendaftaran.id_event = '$id_event'";

    if ( mysqli_query( $db, $delete_query ) ) {
        $delete = "Data has been deleted";
        echo $delete;
    } else {
        echo "Error: " . $delete_query . "<br>" . mysqli_error( $db );
    }
} else {
    echo "The button is not detected!";
}

我遇到的问题是,当我单击删除确认按钮时收到此错误:

The data has not been received!
Undefined variable: id_event in...

这意味着我发送数据失败。

我做错了什么以及如何解决它?

编辑:在php文件中添加错误处理后,ajax发送的值是null而不是id_event,你们知道为什么吗?

最佳答案

更新您的 AJAX:

 $.ajax({
        url: "contain_data.php",
        method: 'post',
        data : 'send='+event_id,
        success:function(){
            alert(event_id);
        }
    });

尝试使用这种方式传递您的 event_id

data : 'send='+event_id,

因为你已经采取了

method: 'post',

希望对你有帮助

关于javascript - 将变量从 AJAX 发送到 PHP 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44432211/

相关文章:

javascript - Angular.js - 使用一个属性预填充输入,但将 ng-model 设置为不同的属性

php - 页面处理完成后,数据库连接会立即关闭吗?

jquery - jQuery用大量数据填充选项标签会使浏览器崩溃

JavaScript - 我在 Firebug 中收到错误

javascript - 使用 Relay 更新 React 状态

php - 关于使用 mysqldump 备份 MySQL DB 的问题

javascript - Web 应用程序选择选项中的文本框

javascript - 选择 jquery,更新 <option> 字段

Javascript + HTML 根据手机大小改变html

javascript - 将下拉列表从选择填充到另一个下拉值不显示