Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка формы AJAX/PHP [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 [2] 3 4 »   

> Описание: где ошибка?
Qwertty
Отправлено: 18 Июня, 2015 - 15:04:04
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Sail пишет:
QwerttyВам input'ы и button надо в форму (тег <form method="POST"></form>) обернуть, для начала.
Потом - javascript доисправлять...
Для определённости в начало PHP-кода можете добавить var_dump($_POST);
Увидите, что действительно передаётся...
Для "очистки" формы служит перенаправление, если без js отправляются данные, header("location: url"); с последующим exit();, если это не был последний оператор скрипта..., а если ajax служит посредником, то в success-функции можно очистить заполненные значения, или в случае ошибки - уведомить о наличии таковой.
И в тег button добавить атрибут name="submit2"
И type="submit" и в скрипт, в обработку клика - параметр event (например) и event[dot]preventDefault()
На случай, если js отключен, а обработка требуется - будет осуществляться с перезагрузкой страницы... без ajax...


Ответьте на главный вопрос, куда девается 'submit2' при передаче AJAX-ом? По-сути в этом ведь весь вопрос. Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 18 Июня, 2015 - 15:09:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Qwertty пишет:
куда девается 'submit2' при передаче AJAX-ом?

Вот это передаётся:
Qwertty пишет:
         {         brand: brand,
         model: model,
         color: color,
         price: price
         },

Откуда бы submit2 вообще должен был появиться? Его нет.


-----
PostgreSQL DBA
 
 Top
Sail
Отправлено: 18 Июня, 2015 - 15:09:23
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




-

(Отредактировано автором: 18 Июня, 2015 - 15:10:03)

 
 Top
Qwertty
Отправлено: 18 Июня, 2015 - 18:20:24
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Мелкий пишет:
Qwertty пишет:
куда девается 'submit2' при передаче AJAX-ом?

Вот это передаётся:
Qwertty пишет:
         {         brand: brand,
         model: model,
         color: color,
         price: price
         },

Откуда бы submit2 вообще должен был появиться? Его нет.


А как его передать? Растерялся
 
 Top
IllusionMH
Отправлено: 18 Июня, 2015 - 18:27:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Qwertty, а в коде в первом посту опечатка, в том что $.post получает только один параметр и сразу закрывается кобка?
Ну нужно его добавить в список передачи, чтобы все передовалось и в том числе сабмит2

(Отредактировано автором: 18 Июня, 2015 - 18:28:05)

 
 Top
Qwertty
Отправлено: 18 Июня, 2015 - 18:42:15
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




IllusionMH пишет:
Qwertty, а в коде в первом посту опечатка, в том что $.post получает только один параметр и сразу закрывается кобка?
Ну нужно его добавить в список передачи, чтобы все передовалось и в том числе сабмит2


по поводу скобки я знаю, эту ошибку я первым делом нашёл )

а как его передавать то? записать в список submit2: submit2 ?
 
 Top
IllusionMH
Отправлено: 18 Июня, 2015 - 18:49:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Qwertty, ага. Главное чтобы было значение которое пройдет проверку isset
 
 Top
Qwertty
Отправлено: 18 Июня, 2015 - 18:59:27
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




IllusionMH пишет:
Qwertty, ага. Главное чтобы было значение которое пройдет проверку isset


Спасибо за помощь, у меня получилось )) Жаль пока плюсануть не могу )


На всякий случай выложу условно-финальный образец, может кому пригодится.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  5.  <script type="text/javascript">
  6.  $(document).ready(function(){
  7.   $("#submit2").click(function(){
  8.   var brand = $("#brand").val();
  9.   var model = $("#model").val();
  10.   var color = $("#color").val();
  11.   var price = $("#price").val();
  12.   var submit2 = $("#submit2").val();
  13.    
  14.      $.post("http://site/up3.php",
  15.          {
  16.            submit2: submit2,
  17.            brand: brand,
  18.            model: model,
  19.            color: color,
  20.            price: price
  21.          },
  22.          function(data){
  23.           $("#alert").html(data);
  24.          }
  25.          );
  26.          });
  27.          });
  28. </script>
  29. </head>
  30.  <body>
  31.  
  32. <input type="text" id="brand" placeholder=" | Brand" required /><br>
  33. <input type="text" id="model" placeholder=" | Model" required /><br>
  34. <input type="text" id="color" placeholder=" | Color" required /><br>
  35. <input type="text" id="price" placeholder=" | Price" required /><br>
  36. <button type="submit" value="OK" id="submit2">OK</button>
  37.  
  38. <p id="alert"></p>
  39. </body>
  40. </html>
  41.  


Обработчик up3.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $connect = mysql_connect('localhost','root','') or die(mysql_error());
  4. mysql_select_db('auto', $connect);
  5.  
  6. if(isset($_POST['submit2'])) {
  7.   $brand = $_POST['brand'];
  8.   $model = $_POST['model'];
  9.   $color = $_POST['color'];
  10.   $price = $_POST['price'];
  11.   $query = mysql_query("INSERT INTO spisok VALUES('','$brand', '$model', '$color', '$price')") or die(mysql_error());
  12.  
  13.  }
  14.  
  15.  
  16.  ?>
  17.  
  18.  
 
 Top
Qwertty
Отправлено: 18 Июня, 2015 - 21:03:59
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Теперь следующий вопрос.
Есть следующий код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  $con = mysql_connect('localhost','root','') or die(mysql_error());
  4.  $db = mysql_select_db('auto' , $con);
  5.  
  6.  if($db==false)
  7.  
  8.  $sql="SELECT * FROM spisok";
  9.  $res=mysql_query($sql) or die( mysql_error() );
  10.  
  11.  if(mysql_num_rows($res) > 0 ) {
  12.  echo '<form method="POST" action="up2.php">';
  13.  while($row=mysql_fetch_assoc($res) ) {
  14.   echo ' ID : ' . $row["id"].'<br />';
  15.   echo ' brand :<br> <input type="text" name="brand['.$row["id"].']" value="'.$row["brand"].'"><br />'."\n";
  16.   echo ' model :<br> <input type="text" name="model['.$row["id"].']" value="'.$row["model"].'"><br />'."\n";
  17.   echo ' color :<br> <input type="text" name="color['.$row["id"].']" value="'.$row["color"].'"><br />'."\n";
  18.   echo ' price :<br> <input type="number" name="price['.$row["id"].']" value="'.$row["price"].'"> RUR<br />'."\n";
  19.    echo '<input type="hidden" name="id[]" value="'.$row["id"].'"> '."\n";
  20.    echo '<br>delete <input type="checkbox" name="delete[]" value="'.$row["id"].'"> ' . "\n";
  21.    echo "<hr>\n";
  22.    
  23.   }
  24.   echo '<input type="submit" name="submit" value="SAVE/DELETE">';
  25.   echo '</form>';
  26.  
  27.  
  28.  }
  29.  
  30. ?>
  31.  


Каким образом мне средствами AJAX отправить всё это дело на обработчик?

Не вдаваясь в терминологию (что бы не написать галиматью), поясню тем, кому не хочется анализировать код. Данный скрипт выводит все данные из базы в поля для редактирования, что бы можно было массово редактировать и удалять записи.

Так вот, каким образом всё это добро можно отправить в обработчик? Я пока только додумал до того, что бы кусками вставлять PHP-код в код jQuery, дабы заполучить $row["id"], но мне кажется это работать не будет, или будет некорректно.

Поделитесь соображениями как это можно реализовать.
 
 Top
Viper
Отправлено: 19 Июня, 2015 - 11:35:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Че тут делиться? форме задаете id и делаете serialize()

CODE (html):
скопировать код в буфер обмена
  1. <form method="post" action="up2.php" id="edit_form">


CODE (javascript):
скопировать код в буфер обмена
  1. $('#edit_form').submit(function(e){
  2.         e.preventDefault();
  3.         var _this = $(this);
  4.  
  5.         $.post(_this.attr('action'), _this.serialize(), function(response){
  6.                 alert(response);
  7.         });
  8. });
  9.  


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Qwertty
Отправлено: 19 Июня, 2015 - 13:32:47
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Viper пишет:
Че тут делиться? форме задаете id и делаете serialize()

CODE (html):
скопировать код в буфер обмена
  1. <form method="post" action="up2.php" id="edit_form">


CODE (javascript):
скопировать код в буфер обмена
  1. $('#edit_form').submit(function(e){
  2.         e.preventDefault();
  3.         var _this = $(this);
  4.  
  5.         $.post(_this.attr('action'), _this.serialize(), function(response){
  6.                 alert(response);
  7.         });
  8. });
  9.  


Чот не работает.
Обработчик вот:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $con = mysql_connect('localhost','root','') or die(mysql_error());
  4.  $db = mysql_select_db('auto' , $con);
  5.  
  6.  if($db==false)
  7.  
  8.  
  9. if(isset($_POST["submit"]))
  10.  {
  11.  
  12.  if(isset($_POST["delete"])) {
  13.  $list = implode("," , $_POST["delete"]);
  14.  $sql=" delete FROM spisok WHERE id IN ($list)";
  15.  mysql_query($sql) or die ( mysql_error() );
  16.  }
  17.  
  18.  foreach($_POST["id"] AS $id)
  19.  {
  20.  $brand = mysql_real_escape_string ($_POST["brand"][$id]);
  21.  $model = mysql_real_escape_string ($_POST["model"][$id]);
  22.  $color = mysql_real_escape_string ($_POST["color"][$id]);
  23.  $price = mysql_real_escape_string ($_POST["price"][$id]);
  24.  $update=" UPDATE `spisok` SET `brand` = '$brand', `model` = '$model', `color` = '$color', `price` = '$price' WHERE `id` = $id LIMIT 1 ; ";
  25.  
  26.  mysql_query($update) or die( mysql_error() );
  27.  }
  28.  $redirect = isset($_SERVER['HTTP_REFERER'])? $_SERVER['HTTP_REFERER']:'new3.php';
  29. header("Location: $redirect");
  30. exit();
  31.  }
  32.  
  33.  ?>
  34.  
 
 Top
Tyoma5891
Отправлено: 19 Июня, 2015 - 14:03:29
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Цитата:
Чот не работает.

а что именно? Улыбка
 
 Top
Qwertty
Отправлено: 19 Июня, 2015 - 15:09:32
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Tyoma5891 пишет:
Цитата:
Чот не работает.

а что именно? Улыбка


Если бы я знал )) Я в jS пока мало чего соображаю ) Не то передаёт или обработчик пилить надо. Не знаю.
Так что лучше скажите что надо допилить ))

P.S.: как можно посмотреть содержимое передаваемого запроса? в Google Developer Tools я такого не нашёл чё то.
 
 Top
IllusionMH
Отправлено: 19 Июня, 2015 - 15:47:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Qwertty, вкладка Network в ней кликнуть на строку с запросом
 
 Top
Qwertty
Отправлено: 19 Июня, 2015 - 15:55:51
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




IllusionMH пишет:
Qwertty, вкладка Network в ней кликнуть на строку с запросом


Показывает куда, но не показывает что.

Вот единственное чё показывает.

send @ jquery-1.11.3.min.js:5
m.extend.ajax @ jquery-1.11.3.min.js:5
m.(anonymous function) @ jquery-1.11.3.min.js:5
(anonymous function) @ new5.html:13
m.event.dispatch @ jquery-1.11.3.min.js:4
r.handle @ jquery-1.11.3.min.js:4
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB