Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   очередной затык с обновлением определенного div (https://javascript.ru/forum/jquery/61692-ocherednojj-zatyk-s-obnovleniem-opredelennogo-div.html)

Vincent Vega 03.03.2016 10:56

очередной затык с обновлением определенного div
 
Уважаемые гуру, вопрос:

есть форма:
<form>
 <input type='text' name='one' value=''>
 //...
 <input type='submit' name='go' value='в атаку' id='add'>
</form>


отправляется $.ajax. После изменений в базе соответственно ничего не меняется, пока не перезагрузишь страницу.

на самой странице есть div типо:

<div class='article'>
  [PHP]require_once "/lib/base_one.php";[/PHP]
 </div>


В нем функция принта которая выводит на страницу код с выборкой из БД.

подскажите плиз как обновить
<div class='article'></div>
после отправки формы не перезагружая всю страницу?

спасибо!

P.S. и если можно, на материал по ajax технологии ссылочку с подробными объяснениями как с нм работать с примерами (как для тупо*рылых). Буду отдельное спасибо! :)

Dilettante_Pro 03.03.2016 11:49

Vincent Vega,
Цитата:

Сообщение от Vincent Vega
есть форма:
<form>
<input type='text' name='one' value=''>
 //...
 <input type='submit' name='go' value='в атаку' id='add'>
</form>

отправляется $.ajax.

А у формы нет action. Или у вас есть процедура onsubmit?

Vincent Vega 03.03.2016 12:17

Цитата:

Сообщение от Dilettante_Pro (Сообщение 409793)
,

А у формы нет action. Или у вас есть процедура onsubmit?

onsubmit='послать()'

Dilettante_Pro 03.03.2016 12:27

Vincent Vega,
Вы пишете, отправляется в ajax. А как? Стандартно данные из формы отправляются в соответствии с тем, что прописано в action формы. Если там ничего не приписано, то должна быть функция по событию submit, в которой прописывается, что делать с данными из формы. В принципе, их можно никуда и не посылать, а использовать на странице по своему усмотрению
Почитайте https://webref.ru/html/form

Vincent Vega 03.03.2016 13:18

есть php файл работающий с базой данных реализованный на singlTon.

ajax отправляет в обработчик.php к которому подключен класс validate_data.php.

var forms_data = $('form.class').serialize();
$ajax({
 type: 'POST',
 url: 'акшин.php',
 //.....,
 success:function(data){
 //... дата возвращает ответ сервера и записывает в div.ansver
 //...сюда прописать код перезагружающий определенный div
 }
});

перековырял гугл, ответов много, рабочих нет
$('div#//название').reload //(или load)()

не рабочие.

все данные отправляются нормально, ответ приходит, но результат меняется только после обновления. ответ от сервера просто строка с инфой типо: "все пучком, данные отправлены." как перезапустить php function или обновить div?

laimas 03.03.2016 14:24

Цитата:

Сообщение от Vincent Vega
сюда прописать код перезагружающий определенный div

А что значит "перегрузить div"? Изменились данные в нем, тогда кто ими управляет? Нет, не изменились, тогда зачем перегружать?

Вы пишите в примере о получении данных для div.ansver, а перегружать нужно какой-то определенный. Какой?

Vincent Vega 03.03.2016 14:53

Цитата:

Сообщение от laimas (Сообщение 409815)
А что значит "перегрузить div"? Изменились данные в нем, тогда кто ими управляет? Нет, не изменились, тогда зачем перегружать?

Вы пишите в примере о получении данных для div.ansver, а перегружать нужно какой-то определенный. Какой?

изначально в div подключается require_once "страница.php"; в ней куча форм в которых выводятся данные. страница.php не имеет html тегов, там php скрипт который обращается к базе, получает данные, генерит html вставляя данные в ячейки формы. таких форм там может быть 2 или 200+, зависит от запроса. каждая форма отправляется отдельно (у всех есть кнопки). Отправляются по уникальному id. нужно после отправки формы сделать что-то типо F5 только для div или перезапустить function php которая находиться в страница.php через js. div.ansver - отображает результат работы оброботчика.

насколько мне объяснили ранее, класс->метод() или просто function php из js запустить невозможно, остается перезагрузка div, все прекрасно работает если тупо в form action='' указать обработчик. данные отправляются, страничка перезагружается с новыми результатами, как сделать без перезагрузки всей страницы, а перезапустить только div.

Dilettante_Pro 03.03.2016 14:59

Vincent Vega,
Все заново введенные данные у вас есть - var forms_data = $('form.class').serialize();
Можете их использовать как угодно, вам от сервера ничего не нужно, кроме положительного ответа

Vincent Vega 03.03.2016 15:07

да.. ничего от сервера не надо. нужно просто перезапустить php скрипт в div.
он сам все сделает. или обновить div, что приведет к перезапуску php скрипта

Vincent Vega 03.03.2016 15:31

может можно что-то типо:
$(document).ready(function(){
 // после отправки формы
 $('div.class').remove();
 var block = $('<div/>',{
  class: 'class',
  text: '<?php require_once "название.php" ?>'
  });
 $(block).appendTo('div.class2');
});


но снова таки из js php недоступен :(

Dilettante_Pro 04.03.2016 11:44

Vincent Vega,
Цитата:

Сообщение от Vincent Vega
все данные отправляются нормально, ответ приходит, но результат меняется только после обновления. ответ от сервера просто строка с инфой типо: "все пучком, данные отправлены." как перезапустить php function или обновить div?

Надо дописать обработчик, чтобы он в ответ отправлял не инфу, а новый сгенерированный HTML для div, и этот ответ вставлять в нужный div

Vincent Vega 04.03.2016 12:35

пробовал. в php генерил html и запихивал в переменную. он вместо вывода html выводил 2166, количество символов.
генерил так:
return printf("
<div>
    <div>текст</div>
    <div>'.переменная.'</div>
    <div>'.$_SESSION['...']['...'].'</div>
    //и т.д
</div>
");

Dilettante_Pro 05.03.2016 19:57

Vincent Vega,
Почему return? Почему printf? Почитайте про php

Vincent Vega 05.03.2016 23:12

printf потому что в html вставляются переменные из массива
$переменная->fetch_assoc();

а почему не return? Если через PHP обработчик, все прекрасно выводит. JS показывает только кол-во символов.

Vincent Vega 05.03.2016 23:13

Подскажите почему такая строчка
$('div#claster'+idn+' input[type="text"]').prev().stop().animate({color:'#00FF00'},300);
ниразу не работает?


Часовой пояс GMT +3, время: 18:00.