从表格单元更新数据库而不刷新页面
问题描述:
我想在表格中编辑可编辑的单元格,然后在不刷新整个页面的情况下点击“输入”更新数据库。从表格单元更新数据库而不刷新页面
首先我填充我的表像从SQL查询:
//up there - no important things
echo'<table>
<tr>';
while($row = mysql_fetch_assoc($result))
{
foreach($row as $key=>$value)
{
if(!($value == "id_p" || $value == "pass" || $value == "salt" || $value == "login"))
{
echo'<th>'.$value.'</th>';
}
}
}
echo '</tr>';
if(mysql_num_rows($result2) > 0)
{
while($row2 = mysql_fetch_assoc($result2))
{
echo '<tr>';
foreach($row2 as $key=>$value)
{
if(!($key == "id_p" || $key == "pass" || $key == "salt" || $key == "login"))
echo'<td>'.$value.'</td>';
}
echo '</tr>';
}
}
else
echo '<tr><td colspan="9">Brak wyników.</td></tr>';
echo'</table>';
然后我改变与脚本(不是我的脚本)细胞<td>
到
$(function(){
$("td").click(function(event)
{
if($(this).children("input").length > 0)
return false;
var tdObj = $(this);
var preText = tdObj.html();
var inputObj = $("<input type='text' />");
tdObj.html("");
inputObj.width(tdObj.width())
.height(tdObj.height())
.css({border:"0px",fontSize:"17px"})
.val(preText)
.appendTo(tdObj)
.trigger("focus")
.trigger("select");
inputObj.keyup(function(event){
if(13 == event.which) // if ENTER
{
var text = $(this).val();
tdObj.html(text);
// SOMETHING HERE TO UPDATE DATABASE??
}
else if(27 == event.which) { // if ESC
tdObj.html(preText);
}
});
inputObj.click(function(){
return false;
});
});
});
,现在我卡住了。我怎样才能发送新的数据更新(无需刷新整个页面)?我不擅长js/ajax。 我已经创建了新的一页update_db.php
if(isset($_POST['post_name']))
{
echo 'processing...';
//mysql things...
}
但这是我的一切。
答
除非您使用AJAX,否则无法进行刷新。
if(13 == event.which) // if ENTER
{
var text = $(this).val();
tdObj.html(text);
$.POST("update_db.php", { tdVal: text });
}
现在,您可以得到update_db.php
的$_POST
的tdVal
自其从PHP取出7
感谢回复我也建议使用的mysqli替代的MySQL。我想知道如何在成功或错误时打印消息?以及如何POST另一个变量(例如'id_p')?我想使用'mysqli',但是我遇到了'mysqli_real_escape_string'的问题,并且强制使用'mysql':( – Kafus
这个不起作用:( – Kafus
)你可以在这里添加'.done(function(data){// sth here });'在这个帖子结束之后:'.POST(“update_db.php”,{tdVal:text})。done(function(data){// body})。fail(function(err) {console.log(err);});' 因为你可以在控制台上看到错误是什么 –