Как отправить данные из браузера на сервер и ответить обратно - PullRequest
1 голос
/ 18 сентября 2011

На моей веб-странице есть текстовая область, где пользователь вводит все виды символов.
Когда он сохраняет его, я хочу отправить данные с помощью 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 Ответ

2 голосов
/ 18 сентября 2011

Вы можете улучшить свой 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-инъекций. Вам следует использовать подготовленные заявления , чтобы избежать этого.

...