Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2019, 11:11   #1
Hrustix
Новичок
Джуниор
 
Регистрация: 01.05.2019
Сообщений: 1
По умолчанию Проблема с выводом информации ajax/json_encode

Добрый день!

Возникла проблема: данные, вводимые в поля формы выходят только после перезагрузки страницы

Код 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);
          $('.username').val("");
          $('.message').val("");
          $('.show').prepend(data.message + data.ip);
          //$('.show').append('<p>' + username + '</p><p>' + message + '</p>' + data.ip);        
          
        },

        error: function(){ 
          $('.username').val('');
          $('.message').val('');
        }
      });
    });
  });
Код 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"]);
      
     
 $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>";        
    
   }


}else {
  $errors =  array_shift($errors);        
}
$comments_info = array(          
          'message' => $comment,
          'ip' => $comm_ip ); 

   echo json_encode($comments_info); 
    exit;      
}
?>
И код 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>
Hrustix вне форума Ответить с цитированием
Старый 06.05.2019, 22:46   #2
JavaDoc
Пользователь
 
Регистрация: 15.12.2018
Сообщений: 16
По умолчанию

$(document).ready(function() означает что функция сработает когда страница будет полнлстью загружена(или при перезагрузке страницы) так что все правильно
JavaDoc вне форума Ответить с цитированием
Старый 07.05.2019, 09:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от JavaDoc Посмотреть сообщение
$(document).ready(function() означает что функция сработает когда страница будет полнлстью загружена(или при перезагрузке страницы) так что все правильно
про reade() Вы всё правильно написали, но это ответ на какой-то другой вопрос.
Автору темы нужно другое -
Цитата:
Сообщение от Hrustix Посмотреть сообщение
данные, вводимые в поля формы выходят только после перезагрузки страницы
вот почему у него не срабатывает ajax и куда должны выводиться данные - мне не очень понятно.

я бы предположил, что проблема тут:

Цитата:
Сообщение от Hrustix Посмотреть сообщение
Код:
//var response = JSON.parse(data);
          $('.username').val("");
          $('.message').val("");
          $('.show').prepend(data.message + data.ip);
          //$('.show').append('<p>' + username + '</p><p>' + message + '</p>' + data.ip);
конкретно - в закомментированных строчках.
именно там нужно делать разбор JSON в переменной data и выводить их в нужные поля.
но, вполне допускаю, что нужные даты в data просто не приходят.
Впрочем, автору темы нужно всего навсего открыть DevTools в браузере, поставить точку останова и посмотреть, что возвращается в data после ajax запроса.
Если там то, что надо, нужно это распарсить и вывести куда следует.
Если там не то, что надо, то нужно смотреть код на сервере и править там.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск на складе с наглядным выводом информации Vitalijj Microsoft Office Excel 0 02.08.2015 12:17
Поиск по значению на другом листе с выводом информации из соседней ячейки besfamilnij Microsoft Office Excel 4 19.03.2014 15:26
Проблема с выводом eymar Общие вопросы C/C++ 6 23.09.2012 22:50
Двумерный массив с выводом информации Godod PHP 2 16.11.2011 14:11
json_encode и символы mrgrudge PHP 3 03.06.2011 10:23