在我的网页上,我有一个textarea,用户输入所有类型的字符 当他保存它时,我想使用AJAX将数据发送到服务器以存储在数据库中。此后,服务器将数据发送回浏览器进行显示。
这是正确的方法吗?
现在我打电话给AJAX:
function update()
{
$.ajax({
type: "POST",
url: "ajax/update.php",
data: "ID=" + ID + "&value=" + encodeURIComponent($('#newText').val()),
success: function(html) {
$('#l' + CurrentID).html(decodeURIComponent(html));
}
});
}
我的php文件如下所示:
<?php
$ID = $_POST["ID"];
$value = nl2br(urldecode($_POST["value"]));
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
$value = htmlentities($value);
$value = str_replace("<br />", "", $value);
$value = str_replace("<br/>", "", $value);
$value = str_replace("<br>", "", $value);
mysql_query("update MyTable set value = '$value' where id = $ID");
echo html_entity_decode(urlencode($value));
?>
我不确定我做的事情是对的。当然,我现在可以看到空格被+号替换的问题。但是我觉得这本书还有一些我没做的事。
答案 0 :(得分:2)
你可以像这样改进你的AJAX调用:
$.ajax({
type: "POST",
url: "ajax/update.php",
data: { ID: ID, value: $('#newText').val() },
success: function(html) {
$('#l' + CurrentID).html(html);
}
});
注意如何使用对象发送数据。您不再需要担心正确的url编码。 jQuery负责处理它。
此外,您的PHP似乎容易受到SQL注入攻击。您应该使用prepared statements来避免这种情况。