【发布时间】:2010-10-15 20:59:25
【问题描述】:
使用 PHP 和 MySql,我正在尝试实现这个相当时髦的就地编辑器:
教程: http://www.davehauenstein.com/code/jquery-edit-in-place/
.js 文件: http://davehauenstein.com/code/scripts/jquery.inplace.min.js
好吧,发生了什么,
- 我单击元素以编辑文本。
- 我清除旧文本,然后输入新文本。
- 我在元素外部单击以启动 Ajax 以保存新文本。
- Ajax 显示“正在保存..”,这是更新元素的默认文本。
- 数据库中的新文本已更新。
- 元素重新加载,而不是在元素内部显示新文本,而是显示元素(单击此处编辑文本),这是 js 文件中返回空元素的默认文本。
问题:只有在我手动刷新页面后,才会在元素中加载新文本。而不是在不刷新的情况下加载元素。
就地编辑的元素:
<div class="editme1"><?php
$content = $_GET['update_value'];
// i added this to try and get the updated value but im
// not really sure, just a guess. i have also used $_POST
// in an attempt to catch it....but i feel stupid even
// saying that..lol
if(!empty($content)) { echo "$content"; } else
{ echo "$row[profilevalue_8]"; }
?></div>
更新数据库的文件(update.php):
<?php include('includes/config.php');
include('includes/functions.php');
$name = $_POST[update_value];
$update = mysql_query("UPDATE profilevalues SET profilevalue_8 = '".$name."'
WHERE profilevalue_user_id = '".uid()."'") or die(mysql_error());
?>
javascript
<script type="text/javascript">
$(document).ready(function(){
$(".editme1").editInPlace({
url: "http://www.mysite.com/update.php",
params: "ajax=yes",
});
</script>
我猜的问题是,我似乎无法按预期反映元素的变化。
如果有任何帮助,我将不胜感激。
谢谢
【问题讨论】:
-
通过将表单 POST 数据直接插入 SQL,您会遇到巨大的 SQL 插入问题。
-
您好乔恩,感谢您的评论。我知道在发布到数据库之前不清理输入的危险,但这只是我想要实现的“初步示例”。无论哪种方式,感谢您的意见,因为这是所有人都知道的重要信息。