Добрый день!
Столкнулся с проблемой: данные выводятся после перезагрузки страницы. Бился долго, вот решил попросить помощи
Код send.php
<?php
error_reporting(-1);
require 'rb.php';
R::setup('mysql:host=127.0.0.1; dbname=ajax_test', 'root', '');
if (!R::testConnection())
{
exit('Не удалось соединиться с базой данных!');
}
R::freeze(true);
$data = $_POST;
if (isset($data['submit_data'])) {
$user_id = intval($data['user_id']);
$user_name = $data['username'];
$message = $data['message'];
$ip = $_SERVER['REMOTE_ADDR'];
$errors = array();
$result = preg_match("/[<>]/", $message);
if ($message == '' || $result == TRUE) {
$errors[] = 'Недопустимые символы!';
}
if (empty($data['username']) || empty($data['message']) ) {
$errors[] = 'No Value entered';
}
if (empty($errors)) {
$messages = R::dispense('messages');
$messages->user_id = $user_id;
$messages->username = $user_name;
$messages->message = $message;
$messages->ip = $ip;
$messages->pubdate = date('d.m.Y H:i');
R::store($messages);
header("Location: ".$_SERVER["HTTP_REFERER"]);
}else {
$errors = array_shift($errors);
}
}
$comm = R::getAll('SELECT * FROM messages');
foreach ($comm as $key => $comment) {
$comment = "<div class ='show'><p>". $comment['username'] . "</p>
<p>". $comment['message'] . "</p>";
$comm_ip = "<p>". $comment['ip'] ."</p></div>";
}
$comments_info = array(
'message' => $comment,
'ip' => $comm_ip );
echo json_encode($comments_info);
exit;
?>
Код script.js
$(document).ready(function(){
$('.submit').on('click', function() {
// e.preventDefault();
var user_id = $('.userid').val();
var username = $('.username').val();
var message = $('.message').val();
var url = $('.comment_form').attr('action');
//e.preventDefault();
$.ajax({
url: url,
type: "POST",
data: {
"user_id": user_id,
"username": username,
"message": message,
"submit_data": $(".submit").val()
},
dataType: 'json',
cache: false,
success: function(data){
//var response = JSON.parse(data);
$('.message').html(data.message);
$('.ip').html(data.ip);
//$('.show').prepend(data.message + data.ip);
//$('.show').append('<p>' + username + '</p><p>' + message + '</p>' + data.ip);
},
error: function(){
$('.username').val('');
$('.message').val('');
}
});
});
});
Код index.php
<?php
error_reporting(-1);
require 'rb.php';
R::setup('mysql:host=127.0.0.1; dbname=ajax_test', 'root', '');
if (!R::testConnection())
{
exit('Не удалось соединиться с базой данных!');
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Комментарии</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="show">
<?php
$comm = R::getAll('SELECT * FROM messages');
foreach ($comm as $key => $comment) {
?>
<p><? echo $comment['username'];?></p>
<p><? echo $comment['message'];?></p>
<p class="ip"><? echo $comment['ip'];?></p>
<?php
}
?>
</div>
<form class="comment_form" action="send.php" method="POST">
<input type="hidden" name="user_id" class="userid" value="5">
<input type="text" name="username" class="username"><br>
<textarea name="message" cols="40" rows="10" class="message"></textarea><br>
<input type="button" name="submit_data" class="submit" value="Submit">
</form>
<noscript>JAVASCRIPT IS NOT WORKING ON YOUR BROWSER</noscript>
</body>
</html>