【问题标题】:After Ajax call, the data-table can't reloadAjax 调用后,数据表无法重新加载
【发布时间】:2018-04-16 20:26:11
【问题描述】:

在我的 Ajax 调用成功后,我想使用从我的 php 部分返回的新值重新加载我的引导表。

<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>

我从 mysql 获取数据的 php 脚本

<?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 按钮时,它会更新我的一个会话值,而我的表取决于该会话值。会话值更改后,如果我重新加载页面,则会显示新值,但我必须强制刷新页面。我只想刷新表格。有什么建议吗?

【问题讨论】:

  • 所以,您所做的只是重新加载窗口。这实际上不会做任何事情。如果你打算使用 AJAX 和 jQuery,你可以清空表,然后重新加载解析的 json 数据。
  • 这是有道理的。我怎么能这样实现?

标签: php jquery ajax bootstrap-table


【解决方案1】:

替换您的表格代码,以便您拥有表格主体。我们稍后会替换它。

<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 函数从响应中提取数据。然后,您需要为表格主体构建内容。这是一个例子。

$("#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!');
    }

});

【讨论】:

  • 我的 php 响应是 [{"tarih":"14_03_2018","Toplam":"1516"},{"tarih":"14_03_2018","Toplam":"1524"},{"tarih":"14_03_2018","Toplam":"4625"},{"tarih":"15_03_2018","Toplam":"1512000"}],我用 &lt;td&gt;["tarih"]&lt;/td&gt; &lt;td&gt;["Toplam"]&lt;/td&gt; 更改了 部分,但没有任何改变。这里有什么错误吗?
  • @KeremCan - 我已经为你更新了我的答案。你现在应该可以使用它了。
【解决方案2】:

我从上述解决方案中得到的错误大约是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!');
                    }

                });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多