php / javascript / ajax отправить форму> сохранить данные в базу данных> обновить данные на веб-сайте - PullRequest
2 голосов
/ 12 мая 2011

У меня есть 3 задачи:

1) Отправить сообщение в текстовой области, когда пользователь нажимает кнопку ввода на клавиатуре или нажимает кнопку «отправить».

2) Используйте php / mysql длясохраните сообщение в базе данных.

3) После сохранения его в базе данных необходимо отобразить обновленное сообщение на веб-сайте обратно.

Проблема в том ... Нет сценария php, который можетизмените событие кнопки «Enter», поэтому мне нужно использовать javascript, если я использую javascript, мне нужно создать новую страницу sendMsgToDB.php для отправки данных в базу данных с помощью следующего javascript / ajax:

<script type="text/javascript">
function gg(e) {  //sumbit the form when user press Enter button
    key = e ? e.which : window.event.keyCode;
    if(key==13) {
           $.ajax({
             type: "POST",
             url: "sendMsgToDB.php?msgid=" + msgid,
             data: dataString2,
             success: function() {
                 $('textarea.resposting').val('');
             }
           });
    }
}

$(function() {
        document.getElementById("resposting").onkeypress = gg; 
});
</script>

Я использую mysql для получения 10 последних сообщений из базы данных и использую чистый php для отображения сообщений на веб-сайте.Если я хочу показывать обновленные сообщения на веб-сайте после того, как пользователь отправил данные через текстовое поле, нажав кнопку «Ввод» на клавиатуре, обязательно вызову function Display_New_Msg() после завершения отправки данных в базу данных.Если я использую Javascript / ajax для сбора данных, как с помощью javascript / ajax / jquery определить, полностью ли данные отправлены в базу данных?

Серьезно, я не люблю использовать javascript / ajax / jquery,но я заставляю их использовать, потому что мне нужно изменить событие кнопки «enter», есть ли способ изменить событие кнопки «enter» с помощью php?Как заставить нажатие кнопки «вводить» действовать как нажатие кнопки «отправить» для отправки формы <form name="frmMsg" action="currentPage.php">, действие переходит к currentPage.php, поэтому страница обновляется, поэтому она будет повторно выполнять function Display_New_Msg()автоматически показывать новое сообщение, поэтому не нужно определять, полны ли данные, отправлять их в базу данных.

1 Ответ

1 голос
/ 12 мая 2011

Если я использую Javascript / ajax для сбора данных, как определить, полностью ли данные отправлены в базу данных?

Все сводится к ответу от ресурса, обрабатывающего запрос AJAX. В этом случае sendMsgToDB.php. Этот скрипт должен убедиться, что он делает то, что ему нужно, и что все попадает в базу данных (обычно достаточно отсутствия ошибок), а затем отправляет ответ соответствующим образом. Если на сервере произошла ошибка, верните код ошибки HTTP (например, ошибка сервера 500), чтобы указать это.

Затем вызов jQuery .ajax() определяет функцию обратного вызова на основе ответа от сервера. Ваш код в настоящее время обрабатывает успешный ответ:

success: function() {
  $('textarea.resposting').val('');
}

Чтобы обработать ответ об ошибке, вам потребуется второй обратный вызов для error:

error: function() {
 alert('There was an error!');
}

Коды ответов HTTP существуют именно для этой цели, поэтому клиенты, использующие эти ответы, могут легко определить состояние запроса.

Редактировать: И наоборот (и, возможно, больше в духе вашего вопроса, если я сейчас вас правильно интерпретирую), вы можете использовать функцию jQuery submit() для submit форма в вашей логике нажатия клавиш. Таким образом, вам не нужно использовать AJAX, и вы можете просто использовать обычную форму отправки и ответа, которые вы указали в качестве своих предпочтений. Примерно так:

if(key==13) {
  $('#myForm').submit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...