Ajax 调用后,数据-table 无法重新加载

After Ajax call, the data-table can't reload

在我的 Ajax 调用成功后,我想用 php 部分的 return 的新值重新加载我的 bootstrap-table .

<table id="gelirtableid" data-toggle="table" data-url="gelir-getdata.php" data-classes="table table-hover" data-striped="true"
                        data-pagination="true" data-page-list=[20, 40, 75, 100] data-search="true">
                            <thead>
                                <tr >
                                    <th data-sortable="true" data-field="tarih">Tarih</th>
                                    <th data-sortable="true" data-field="Toplam">Toplam</th>                                    
                                </tr>
                            </thead>
</table>

我的 php 从 mysql

获取数据的脚本
<?php 
include "dbcon.php";
if($_POST["gelirtablosecimi"]){
        $gelirtabloadi = $_POST["gelirtablosecimi"];
        $_SESSION["gelirtabloadi"] = $gelirtabloadi;
}

$gelirtabloadi = $_SESSION["gelirtabloadi"];
$gelirgunluktoplam = $db->prepare("select tarih, hasilat + visa + butce_ici + hisse_satis + sosyal_konut + elektrik + haberlesme + iller_bank + diger AS Toplam from $gelirtabloadi");
$gelirgunluktoplam->execute();
$results = $gelirgunluktoplam->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo $json;

 ?>

和我的 Ajax 电话

$("#gelirgetir").click(function() {
                    var gelirtablosecimi = $("#select1").val();
                    if (gelirtablosecimi) {
                        $.ajax({
                            type: "POST",
                            url: "gelir-getdata.php",
                            data: {
                                "gelirtablosecimi": gelirtablosecimi
                            },
                            success: function(result) {                                                                
                                notifyUser('success', 'Başarılı!', 'Tablo başarıyla güncellendi');
                                location.reload();
                            },
                            error: function(result) {
                                notifyUser('error', 'Hata', 'error');
                            }
                        });
                    } else {
                        notifyUser('info', 'Dikkat', 'Tablo seçimi yapmadınız!');
                    }

                });

我是 Ajax 电话的新手,问题可能出在我的 ajax 部分。 如您所见,我在调用成功后处理 location.reload(); 。我尝试重新加载 .container#gelirtableid 但对我没有任何作用。基本上,当我按下 #gelirgetir 按钮时,它会更新我的一个会话值,而我的 table 取决于该会话值。会话值更改后,如果我重新加载页面,则会显示新值,但我必须强制刷新页面。我只想刷新table。有什么建议吗?

替换您的 table 代码,使您拥有一个 table 正文。我们稍后会替换它。

<table id="gelirtableid" data-toggle="table" data-url="gelir-getdata.php" data-classes="table table-hover"
       data-striped="true"
       data-pagination="true" data-page-list=[20, 40, 75, 100] data-search="true">
    <thead>
    <tr>
        <th data-sortable="true" data-field="tarih">Tarih</th>
        <th data-sortable="true" data-field="Toplam">Toplam</th>
    </tr>
    </thead>
    <tbody>

    </tbody>
</table>

在您的函数中,您需要通过 jQuery 中的 parseJSON 函数从响应中提取数据。然后,您需要为 table 正文构建内容。这是一个例子。

$("#gelirgetir").click(function () {
    var gelirtablosecimi = $("#select1").val();
    if (gelirtablosecimi) {
        $.ajax({
            type: "POST",
            url: "gelir-getdata.php",
            data: {
                "gelirtablosecimi": gelirtablosecimi
            },
            success: function (result) {
                notifyUser('success', 'Başarılı!', 'Tablo başarıyla güncellendi');
                var content = '';
                $.each(result, function(i, data) {
                    content += '<tr>';
                    content += '<td>'+result[i].tarih+'</td>';
                    content += '<td>'+result[i].Toplam+'</td>';
                    content += '</tr>';
                });

                $('#gelirtableid tbody').html(content);
            },
            error: function (result) {
                notifyUser('error', 'Hata', 'error');
            }
        });
    } else {
        notifyUser('info', 'Dikkat', 'Tablo seçimi yapmadınız!');
    }

});

我从上面的解决方案中得到的错误大约是 JSON.parse()$.each 需要解析 JSON 数据。以下代码非常有效。

<table id="gelirtableid" data-toggle="table" data-url="gelir-getdata.php" data-classes="table table-hover" data-striped="true"
                            data-pagination="true" data-page-list=[20, 40, 75, 100] data-search="true">
                                <thead>
                                    <tr >
                                        <th data-sortable="true" data-field="tarih">Tarih</th>
                                        <th data-sortable="true" data-field="Toplam">Toplam</th>                                    
                                    </tr>
                                </thead>
</table>

Ajax 通话:

$("#gelirgetir").click(function() {
                    var gelirtablosecimi = $("#select1").val();
                    if (gelirtablosecimi) {
                        $.ajax({
                            type: "POST",
                            url: "gelir-getdata.php",
                            data: {
                                "gelirtablosecimi": gelirtablosecimi
                            },
                            success: function(result) {
                                var content = '';
                                    var obj = JSON.parse(result);
                                    $.each(obj, function(i, data) {                                        
                                        content += '<tr>';
                                        content += '<td>'+obj[i].tarih+'</td>';
                                        content += '<td>'+obj[i].Toplam+'</td>';
                                        content += '</tr>';
                                    });

                                    $('#gelirtableid tbody').html(content);                                                             
                                notifyUser('success', 'Başarılı!', 'Tablo başarıyla güncellendi');                                
                            },
                            error: function(result) {
                                notifyUser('error', 'Hata', 'error');
                            }
                        });
                    } else {
                        notifyUser('info', 'Dikkat', 'Tablo seçimi yapmadınız!');
                    }

                });