$_GET updated_value(?) - 另一个就地编辑器(Jquery 插件)问题

Posted

技术标签:

【中文标题】$_GET updated_value(?) - 另一个就地编辑器(Jquery 插件)问题【英文标题】:$_GET updated_value(?) - Another In-Place Editor(Jquery Plugin) question 【发布时间】:2010-10-15 20:59:25 【问题描述】:

使用 phpmysql,我正在尝试实现这个相当时髦的就地编辑器:

教程: 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 插入问题。 您好乔恩,感谢您的评论。我知道在发布到数据库之前不清理输入的危险,但这只是我想要实现的“初步示例”。无论哪种方式,感谢您的意见,因为这是所有人都知道的重要信息。 【参考方案1】:

您忘记了 update.php 中的某些内容:) 每个 In Place Editor 都会向更新文件发出 AJAX 请求,然后将通过该请求在 update.php 中获得的内容放入已编辑的元素中。

所以你的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());

echo $_POST['update_value']; //add this to your file and it should be working now
?>

【讨论】:

我太傻了....但有时需要一个人指出显而易见的东西才能让某人(我)明白......哈哈......谢谢你,我永远在你的债务......大声笑【参考方案2】:

为了补充 Bogdan Constantinescu 所说的,我认为值得指出的是,为了防止人们输入讨厌的数据,你真的应该

在您作为 html 发送到浏览器的任何不受信任的字符串上调用 htmlspecialchars()。这将有助于防止 XSS 攻击。 在您直接放入 SQL 语句的任何字符串上调用 mysql_real_escape_string()。这将保护您免受 SQL 注入攻击。

【讨论】:

您好 tomhaigh,感谢您的评论。我完全同意,非常值得指出这两个重要功能。还要提醒任何读者,这是一个用于测试的“初步示例”,所有输入都应在发布前进行清理。谢谢!

以上是关于$_GET updated_value(?) - 另一个就地编辑器(Jquery 插件)问题的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit:模拟__get()导致“__ get()必须正好接受1个参数......”

method="GET" 给出空 $_GET,method="POST" 给出非空 $_GET。为啥? (PHP 5.6.6)

php __set()和__get()的具体用法,举例说明,谢~

php __CLASS__get_class()与get_called_class()的区别

PHP魔术法__set和__get

当 $_GET 只能是固定值时检查 $_GET 是不是需要额外的安全性?