Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2016, 15:40
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Ajax обновление информации в бд
Здравствуйте! У меня есть html(div с информацией, чистый) и он загружен в бд и вывожу его на страницу с помощью php, и на этой же страницы я динамично через js меняю class в div и текст, и мне нужно чтобы по клику на кнопку эта информация перезаписалась без перезагрузки(на ajax) в бд с новыми изменениями(изменились class, текст) и без никаких потерь(старых), подскажите пожалуйста такой пример реализации или это реально вообще?
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2016, 16:45
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Вот что я накатал , но не выводит обновленную информацию почему-то...Я из бд вывел информацию в id test1, затем по клику в div с id test1 поменял class с одного на другой и нажал кнопку Сохранить( в надежде что запрос придет на ajax уже с обновленной информацией) но присылает старую информацию без обновления...Подскажите пожалуйста куда копать...
<input type="button" id="send" value="Сохранить">
Результат обновления - 
<div id="result"></div>
<script>
//при клике на кнопку
$("#send").click(
function() {
 
//отправляем ( куда , что (имя / значение) , получаем ответ)
 $.post('/order.php', { name: $("#test1").val() } , function(data) {
 //ответ заносим в див
    $('#result').html(data);
  }  );
} 
 
);
</script>
<? if (isset($_POST['name'])) die($_POST['name']); ?>
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2016, 16:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от PonyS
нажал кнопку Сохранить( в надежде что запрос придет на ajax уже с обновленной информацией) но присылает старую информацию без обновления
Зачем вообще возвращать обновление, если сменой класса занимается клиент? Обновление логично ожидать при следующем запросе страницы. А вот это что за шедевр?

if (isset($_POST['name'])) die($_POST['name']); ?
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2016, 16:56
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от laimas Посмотреть сообщение
Зачем вообще возвращать обновление, если сменой класса занимается клиент? Обновление логично ожидать при следующем запросе страницы. А вот это что за шедевр?

if (isset($_POST['name'])) die($_POST['name']); ?
Мне нужно сохранить то что сделал клиент в бд, то бишь клиент изменил class у div и запись сразу ушла(на ajax) в обновление и в бд. POST случайно добавил
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2016, 17:09
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Пробую еще вот так:
<script>$(document).ready(function(){
    $(".price").click(function(){
    $.ajax({
            type:"POST",
            url:"/order.php",
            data:$('#test1').html(),
            success: function(response){
                $('#result').html(response);
            }
        });
    });
    });  </script>


Результат обновления
<div id="result"></div>

Но все равно не присылает обновленный вариант div id=test1, подскажите пожалуйста как решить... И опять не пойму, если даже и получиться вывести обновленную информацию из div test1, как ее вытянуть из id result и загрузить в бд ?((

Последний раз редактировалось PonyS, 27.05.2016 в 17:11.
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2016, 17:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вы не ответили на вопрос. Если код ранее показанный обрабатывающий асинхронный запрос клиента и есть родитель обновляемого div и кода клиентского, то почему код ответа расположен после html-кода этой страницы?

И вообще, это бесполезное занятие. Есть у вас элемент с классом А1, клиент меняет его на класс А2. Стиль элемента изменился, зачем же получать сам элемент назад? Сообщили серверу об изменениях, сохранил он их, открывая следующий раз страницу получите элемент уже с классом А2.
Ответить с цитированием
  #7 (permalink)  
Старый 27.05.2016, 17:22
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

То есть перезагрузка div на ajax, человек изменил информацию, нажал кнопку, информацию обновилась в бд и тут же старая информация пропала и появилась новая
Ответить с цитированием
  #8 (permalink)  
Старый 27.05.2016, 17:25
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от laimas Посмотреть сообщение
Вы не ответили на вопрос. Если код ранее показанный обрабатывающий асинхронный запрос клиента и есть родитель обновляемого div и кода клиентского, то почему код ответа расположен после html-кода этой страницы?

И вообще, это бесполезное занятие. Есть у вас элемент с классом А1, клиент меняет его на класс А2. Стиль элемента изменился, зачем же получать сам элемент назад? Сообщили серверу об изменениях, сохранил он их, открывая следующий раз страницу получите элемент уже с классом А2.
Мне нужно как бы перезагрузка div на ajax, человек изменил информацию, нажал кнопку, информацию обновилась в бд и тут же старая информация пропала и появилась новая вместо старой, и все это без перезагрузки. А почему нельзя на новой странице открыть? т.к. все оформление идет на одной странице, и нужна возможность тут же еще раз к примеру поменять class, я нагуглил к примеру такое - http://forum.php.su/topic.php?forum=40&topic=4399 , но не пойму как работает...
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2016, 17:48
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Вроде бы вник как получить то что мне нужно, но почему-то post на ajax не выводиться <? echo $_POST['ides']; ?> , помогите найти проблему пожалуйста, по клику на price должен на ajax отправляться post запрос с информацией из div test1

<script>$(document).ready(function(){
    $(".price").click(function(){
    $.ajax({
            type:"POST",
            url:"/order.php",
            data: {ides: $('#test1').html()},
            success: function(response){
               
            }
        });
    });
    });  </script>


<? echo $_POST['ides']; ?>
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2016, 18:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если клиент вносит изменения для элемента на странице, то эти изменения уже произошли, зачем серверу возвращать это назад? Ему нужно сохранить изменения и вернуть результат сохранения - успешно или же произошла ошибка.

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

Пример без базы, на сессии. Сохранить под любым именем и запустить. Изменить класс элемента. Нажать F5 (последующее открытие страницы).

<?
session_start();
if($_POST['choice']) {
    $_SESSION['class'] = $_POST['choice'];
    exit('Ok');
}
?>
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>
.red {
    color: #f00;
}
.green {
    color: #0f0;
}
</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script> 
$(function() {
    $('input').change(function() {
        $('p')[0].className = this.value;
        $.post(location, {choice : this.value}, function(d) {
            alert(d)
        }) 
    });
});
</script>     
</head> 
<body>
<p class="<?=$_SESSION['class'] ?: 'red'?>">Text</p>
<fieldset>
<legend>Изменение класса</legend>
<label><input type="radio" name="choice" value="red" <?=!$_SESSION['class'] || $_SESSION['class']=='red' ? 'checked' : null?> /> Красный</label>
<label><input type="radio" name="choice" value="green" <?=$_SESSION['class']=='green' ? 'checked' : null?> /> Зеленый</label>
</fieldset>
</body> 
</html>


То есть, при запросах страницы элемент будет иметь тот класс, который ранее был сохранен. Отсылать для этого элемент Р на сервер нет необходимости.

Другое дело, если речь идет, к примеру, о визуальном редакторе и html-код подготавливаемый в нем нужно предварительно просмотреть "в реальных условиях". Что вы меняете в DIV, зачем при этом его гонять туда сюда, я так и не понял.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX обновление div в разных частях страницы kkolorid AJAX и COMET 9 19.12.2014 11:58
Вывод информации со страницы в ajax fAmOus Элементы интерфейса 4 17.07.2012 00:32
обновление iframe с помощью AJAX Aglenn AJAX и COMET 4 02.09.2011 22:48
Обновление информации ctpz jQuery 4 14.07.2011 23:28
Обновление информации Lvenok1987 Элементы интерфейса 14 05.02.2010 06:34