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!');
}
});
在我的 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!');
}
});