Изменить этот код:
jQuery('form').ajaxForm({
target: '#noteReturn',
success: function() {
$('#noteReturn').fadeIn('slow');
}
});
К этому:
jQuery('form').ajaxForm({
target: '#noteReturn',
dataType: 'json',
success: function(data) {
$('#noteReturn' + data.id).html(data.note).fadeIn('slow');
}
});
И этот код:
<?php
$note = $_POST['note'];
$id = $_POST['bid'];
$sql = "INSERT INTO notes (business_id, notes) VALUES ('$id', '$note')";
$result = mysql_query( $sql );
if($result) {
echo " $note";
}
?>
К этому:
<?php
$note = mysql_real_escape_string($_POST['note']);
$id = mysql_real_escape_string($_POST['bid']);
$sql = "INSERT INTO notes (business_id, notes) VALUES ('$id', '$note')";
$result = mysql_query( $sql );
if($result) {
print json_encode(array("id" => $id, "note" => $note));
}
?>
Что случилось?
Изменение в коде PHP использует функцию PHP json_encode
для вывода идентификатора предприятия, к которому была добавлена заметка, а также фактический текст заметки. В коде javascript я добавил dataType
из 'json', чтобы сообщить сценарию, какой формат ответа ожидать. Как только запрос получен в обратном вызове success
, переменная data
является объектом со значениями, которые мы передали через json_encode
. Таким образом, data.id
имеет бизнес-идентификатор, а data.note
имеет новую заметку. Используя функцию манипуляции html()
в jQuery, внутренний HTML-код div обновляется до последней заметки. Селектор div использует переданный нами идентификатор, поэтому мы можем обновить соответствующий div.
Кроме того, это немного не по теме, но убедитесь, что вы всегда используете mysql_real_escape_string
при вводе значений в запрос, как вы. Если вы не используете это, ваши запросы будут уязвимы и подвержены атакам с использованием инъекций, и они не будут красивыми. Если клиент решил ввести значение примечания ');DROP TABLE businesses;
, вы действительно почувствуете боль. Желательно переключиться на PDO
или MySQLi
и использовать prepared statements
, поскольку в настоящее время они являются «правильным» способом выполнения запросов.