【发布时间】:2017-08-28 05:55:21
【问题描述】:
我在每一行都有带有编辑按钮的表格。然后我有 ajax 功能,按钮编辑/保存应该在数据库中保存新值但不更新它。
在控制台中,我看到它正在返回Success,并且参数传递正确。
这是我的按钮
foreach ($row as $r){
echo '<tr id="row-'.$r['rate_id'].'">
<td id="people-'.$r['number_of_people'].'">'.$r['number_of_people'].'</td>
<td id="price_val-'.$r['rate_id'].'">$ '.$r['price_per_people'].'</td>
<td>
<button id="edit_button'.$r['rate_id'].'" onclick="edit_row('.$r['rate_id'].')" class="btn btn-primary edit_button">Edit</button>
<input type="button" class="save_button" id="save_button'.$r['rate_id'].'" value="save" onclick="save_row('.$r['rate_id'].')">
</td>
</tr>';
}
ajax函数
function edit_row(id)
{
var price=document.getElementById("price_val-"+id).innerHTML;
document.getElementById("price_val-"+id).innerHTML="<input type='text' id='price-"+id+"' value='"+price+"'>";
document.getElementById("edit_button"+id).style.display="none";
document.getElementById("save_button"+id).style.display="block";
}
function save_row(id)
{
var price=document.getElementById("price-"+id).value;
$.ajax
({
type:'post',
url:'includes/update.php',
data:{
edit_row:'edit_row',
row_id:id,
price_val:price,
},
success:function(response) {
if(response=="success")
{
document.getElementById("price_val-"+id).innerHTML=price;
document.getElementById("edit_button"+id).style.display="block";
document.getElementById("save_button"+id).style.display="none";
}
}
});
}
这是update.php
require 'connection.php';
if(isset($_POST['edit_row']))
{
$sql = "UPDATE new_rates SET price_per_people = :price_for_people WHERE rate_id = :rate_id";
$stmt = $db_con->prepare($sql);
$stmt->bindParam(':price_for_people', $_POST['price_val']);
$stmt->bindParam(':rate_id', $_POST['row_id']);
$stmt->execute();
echo "success";
exit();
}
在控制台中我看到了
edit_row:edit_row
row_id:1
price_val:$ 12
这似乎是正确的,但我不确定美元符号$,因为我没有将它保存在数据库中。必须只保存价格12。
有人可以帮我清理一下并让它工作吗?由于success 即将出现在控制台上,我有点迷失了可能是什么问题。
【问题讨论】:
-
你能打印最后执行的查询吗?
-
我不知道该怎么做。
-
@MagnusEriksson 这条线
document.getElementById("price_val-"+id).innerHTML="<input type='text' id='price-"+id+"' value='"+price+"'>";没有传递价格 -id='price-"+id+"'? -
更新是否发生在数据库中?
-
您的
price_per_people列是什么数据类型?如果它是数字,它不会接受像"$ 12"这样的值。仅供参考,$前缀来自document.getElementById("price_val-"+id).innerHTML,因为您的<td>标签中有$
标签: javascript php ajax