如何将数据从浏览器发送到服务器并回复

时间:2011-09-18 07:17:27

标签: php javascript character-encoding url-encoding

在我的网页上,我有一个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));
?>

我不确定我做的事情是对的。当然,我现在可以看到空格被+号替换的问题。但是我觉得这本书还有一些我没做的事。

1 个答案:

答案 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来避免这种情况。