Как обновить блок с помощью Ajax ?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 3 октября 2017 в 15:21
Доброго времени суток!
Я передаю число с помощью аякса в базу. Потом это число вывожу на страницу, но хочу сделать так что бы при каждом нажатие отправки на кнопку это число тоже обновлялось. То есть как то обновить это
  1. <div id="randommiks"><?php echo $sport_follow_team_info; ?></div>
массив.

Передаю данные вот так.

  1. $('.button17').click( function() {
  2.  
  3. $.ajax({
  4. type: 'POST',
  5. url: '/sports/decrement',
  6. data: 'user_id=<?php echo $user->id; ?>&team_id=<?php echo $id_page; ?>',
  7. success: function(msg){
  8. $('.buttons17').css('display', 'none');
  9. $('.buttons16').css('display', 'block');
  10.  
  11. $('.buttons18').css('display', 'none');
  12. $('.buttons19').css('display', 'block');
  13. }
  14. });
  15.  
  16. });
#2 3 октября 2017 в 15:26
После 12 строчки пишете
  1. $('#randommiks').html('<span style="color: red;"'новый текст полученный из обработчика ajax /sports/decrement</span>');
кстати, параметр data на 6 строчке должен быть в формате
{имя_параметра0: значение_параметра0, имя_параметра1: значение_параметра1,…: ....,…: ...}
#3 3 октября 2017 в 15:37


После 12 строчки пишете

  1. $('#randommiks').html('
  2.  

Странник

Да такое тоже делал но мне нужно что бы цифра изменялась
Я данные заношу url: '/sports/increment', вот сюда но вывожу уже из главного экшена по id

Вот так

  1. <script>
  2. $('.button16').click( function() {
  3.  
  4. $.ajax({
  5. type: 'POST',
  6. url: '/sports/increment',
  7. data: 'team_id=<?php echo $id_page; ?>',
  8. success: function(msg){
  9. $('.buttons16').css('display', 'none');
  10. $('.buttons17').css('display', 'block');
  11.  
  12. $('.buttons18').css('display', 'block');
  13. $('.buttons19').css('display', 'none');
  14. //$('.results').html(msg);
  15. $('.results').html('<?php echo $sport_follow_team_info; ?>');
  16. }
  17. });
  18.  
  19. });
  20.  
  21. $('.button17').click( function() {
  22.  
  23. $.ajax({
  24. type: 'POST',
  25. url: '/sports/decrement',
  26. data: 'user_id=<?php echo $user->id; ?>&team_id=<?php echo $id_page; ?>',
  27. success: function(msg){
  28. $('.buttons17').css('display', 'none');
  29. $('.buttons16').css('display', 'block');
  30.  
  31. $('.buttons18').css('display', 'none');
  32. $('.buttons19').css('display', 'block');
  33. $('.results').html('<?php echo $sport_follow_team_info; ?>');
  34. }
  35. });
  36.  
  37. });
  38.  
  39.  
  40. </script>
  1. public function actionIncrement(){
  2.  
  3.  
  4. $user = $this->cms_user;
  5. $param1 = $this->request->get('name');
  6. $param2 = $this->request->get('nickname');
  7. $team_id = $this->request->get('team_id');
  8.  
  9. $follow['user_id'] = $user->id;
  10. $follow['team_id'] = $team_id;
  11. $follow['nickname'] = $param2;
  12. $follow['name'] = $param1;
  13. $team_follow = $this->model->incrementSport($follow);
  14. }
  15.  
  16. public function actionDecrement(){
  17. $user_id = $this->request->get('user_id');
  18. $team_id = $this->request->get('team_id');
  19.  
  20. $this->model->deleteDecrementSport($user_id, $team_id);
  21.  
  22. }
  23.  


  1. <div class="results"><?php echo $sport_follow_team_info; ?></div>
#4 3 октября 2017 в 15:43

кстати, параметр data на 6 строчке должен быть в формате
{имя_параметра0: значение_параметра0, имя_параметра1: значение_параметра1,…: ....,…: ...}

Странник

Проблема в записи нет все супер работает но то что я добавляю приходится обновить страницу что бы увидеть итог цифры так же когда удаляю.

Например было 2 добавил стало 3, но 3 можно увидеть только если обновить страницу.
#5 3 октября 2017 в 15:45

Я данные заношу url: '/sports/increment', вот сюда но вывожу уже из главного экшена по id

Нико

у меня подозрение, что вы не знаете, как работает аякс. а работает он так:
1. вы формируете страницу обычным образом.
2. не перезагружая страницы (это же аякс!!!) отправляете данные в приемник, который у вас по адресу /sports/decrement (стати, тоже неправильно, тут у вас должен быть обработчик — файл *.php и имя его должно быть прописано тут
3. обработчик что-то делает. связывается с базой, что-то считает, и отправляет ответ обратно
4. этот ответ принимается строчкой success: function(msg){} и переменная msg этот ответ содержит
5. Вы как-то в js-скрипте этот ответ обрабатываете и вставляете в элемент страницы. то есть заменяете то значение, которое там было, своим.

Ну уж как еще более подробно разжевать, я уже не знаю)))
#6 3 октября 2017 в 15:47


Я данные заношу url: '/sports/increment', вот сюда но вывожу уже из главного экшена по id

Нико

у меня подозрение, что вы не знаете, как работает аякс. а работает он так:
1. вы формируете страницу обычным образом.
2. не перезагружая страницы (это же аякс!!!) отправляете данные в приемник, который у вас по адресу /sports/decrement (стати, тоже неправильно, тут у вас должен быть обработчик — файл *.php и имя его должно быть прописано тут
3. обработчик что-то делает. связывается с базой, что-то считает, и отправляет ответ обратно
4. этот ответ принимается строчкой success: function(msg){} и переменная msg этот ответ содержит
5. Вы как-то в js-скрипте этот ответ обрабатываете и вставляете в элемент страницы. то есть заменяете то значение, которое там было, своим.

Ну уж как еще более подробно разжевать, я уже не знаю)))

Странник

А вот через php не делал, через фронтед добавил.
#7 3 октября 2017 в 15:48

А вот через php не делал

Нико
значит, вы не понимаете, как работает аякс
#8 3 октября 2017 в 15:50


А вот через php не делал

Нико
значит, вы не понимаете, как работает аякс

Странник

Если бы понял наверное не создавал бы тему)
#9 3 октября 2017 в 15:50
Странник, про второй пункт вы не правы. Обработчик там верный. Это двойка и в качестве обработчика выступает экшн компонента. Экшн и обрабатывает аякс запрос и дальше по схеме (связывается с базой, модифицирует данные т возвращает ответ)
#10 3 октября 2017 в 15:52
Если писать обычно в php это вот так

  1. case 'button16':
  2. echo 'Пример 2 - передача завершилась успешно. Параметры: name = ' . $_POST['name'] . ', nickname= ' . $_POST['nickname'];
  3. break;
И вывожу в html, а тут как вывести данные не знаю если честно (

И даже если получилось бы отправить в фронтеда а как id прописать по каторму фильтруешь. sports/team/$id
#11 3 октября 2017 в 16:04

в качестве обработчика выступает экшн компонента

@SmartControl
этот экшен имеет расширение php. здесь надо прописать его полное имя и путь от корня сайта.
я никогда этим не гнушаюсь и у меня всегда все работает
#12 3 октября 2017 в 16:10
Я может как то не так написал, мне нужно вывести не то что передаю, а вывести то что передал после нажатие кнопки из базы.
#13 3 октября 2017 в 16:13
Можете надо мной глумиться, конечно, но дружище Нико, похоже, живет в какой-то параллельной вселенной. Я ничего не понимаю из того, что он пытается сказать))))
Похоже, он так же не понимает меня))
#14 3 октября 2017 в 16:16


Можете надо мной глумиться, конечно, но дружище Нико, похоже, живет в какой-то параллельной вселенной. Я ничего не понимаю из того, что он пытается сказать))))
Похоже, он так же не понимает меня))

Странник

Нет). Спасибо сейчас попробую еще пару вариантов если получится напишу.
#15 3 октября 2017 в 16:26
Странник, вы тоже в параллельной вселенной)) все там правильно с экшеном — не надо php, этот запрос улетит компоненту и обработает движок его как надо. Это InstantCms 2 — там не нужны обращения напрямую к php.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.