Я пытаюсь отправить форму, используя jQuery AJAX.Я не очень хорош в этом коде, поэтому не могу видеть
Issue - почему мне нужно дважды отправить форму, чтобы опубликовать ее.
Когда я отправляю форму, текстовая область возвращается к тексту placeholder
, и ничего не происходит.Когда я нажимаю на нее снова, сообщение отправляется и отображается.У меня есть следующие textarea
и button
<textarea class="add-message-textarea" name="message_body" id="message_textarea" placeholder="Write message"></textarea>
<button class="post-button button" type="submit" name="post_message" id="message_submit">Post</button>
Когда я отправляю, у меня есть следующее:
$body = '';
if(isset($_POST['post_message'])) {
if(isset($_POST['message_body'])) {
$body = $_POST['message_body'];
}
}
Затем вызов AJAX:
var userLoggedIn = '<?php echo $userLoggedIn; ?>';
var user_to = '<?php echo $user_to; ?>';
var body = '<?php echo $body; ?>'
// var body = $("#message_textarea").val();
$(document).ready(function() {
$("#message_submit").click(function(){
//ajax request for send 'sending a new message' string to dB
$.ajax({
url: "includes/handlers/ajax_send_message.php",
type: "POST",
data: {'userLoggedIn':userLoggedIn, 'user_to':user_to, 'body':body},
cache: true,
success: function(response) {
console.log("message_sent");
}
});
});
});
ajax_send_message.php
выглядит так просто:
global $con;
if(isset($_POST['userLoggedIn']) && isset($_POST['user_to']) && isset($_POST['body'])) {
$userLoggedIn = $_POST['userLoggedIn'];
$body = $_POST['body'];
$user_to = $_POST['user_to'];
$date = date("Y-m-d H:i:s");
$message_obj = new Message($con, $userLoggedIn);
$message_obj->sendMessage($user_to, $body, $date);
}
Я могу заставить это работать без проблем, используя PHP с приведенным ниже, но я не хочу перезагрузить страницу.
if(isset($_POST['post_message'])) {
if(isset($_POST['message_body'])) {
$body = $_POST['message_body'];
$date = date("Y-m-d H:i:s");
$message_obj->sendMessage($user_to, $body, $date);
}
}
Любая помощь приветствуется.