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
Форумы портала PHP.SU :: Версия для печати :: Отправка формы AJAX/PHP
Форумы портала PHP.SU » » Вопросы новичков » Отправка формы AJAX/PHP

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

1. Qwertty - 16 Июня, 2015 - 13:39:53 - перейти к сообщению
Чё-то не могу понять, где косяк. Сверял js-скрипт с одним давно написанным мною рабочим скриптом, вроде всё сходится, там единственное что отправка email, а здесь в базу. Переменные вроде те что надо передаются, а что же не так? Огорчение

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <script type="text/javascript" src="js/jquery.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.    
  13.      $.post('http://site/up.php'),
  14.          {
  15.          brand: brand,
  16.          model: model,
  17.          color: color,
  18.          price: price
  19.          },
  20.          function(data){
  21.          }
  22.          );
  23.          });
  24.          });
  25. </script>
  26. </head>
  27. <body>
  28. <div class=one></div>
  29.  
  30. <input type="text" id="brand" placeholder=" | Brand" required /><br>
  31. <input type="text" id="model" placeholder=" | Model" required /><br>
  32. <input type="text" id="color" placeholder=" | Color" required /><br>
  33. <input type="text" id="price" placeholder=" | Price" required /><br>
  34. <button id="submit2">OK</button>
  35.  
  36.  
  37. </body>
  38. </html>
  39.  
  40.  



PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $connect = mysql_connect('localhost','root','') or die(mysql_error());
  4.  mysql_select_db('auto');
  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.  
2. Viper - 16 Июня, 2015 - 14:06:38 - перейти к сообщению
Ошибку надо угадывать?
mysql_* устарели.
3. LIME - 16 Июня, 2015 - 14:07:32 - перейти к сообщению
Ой снова здорова
Может кто и заморочится и увидит ошибку но я нормальный ленивый разраб
Я умею дебажить
Чего и тебе советую
Хром ф12 вкладка сеть
Покажет тебе что куда улетает и что откуда прилетает
Удачи
4. Qwertty - 16 Июня, 2015 - 14:08:31 - перейти к сообщению
Viper пишет:
Ошибку надо угадывать?
mysql_* устарели.


так в варианте без ajax же всё работает.
5. LIME - 16 Июня, 2015 - 14:10:25 - перейти к сообщению
Viper пишет:
mysql_* устарели.
как вы блин надоели тыкать в это
Не я само собой понимаю
Но
Если не нужны транзакции и препарированые запросы то какая хрен разница???? Пусть себе юзают
Когда понадобится сами поймут что надо переходить
Тем более там как правило запросы по всему коду разбросаны
Даже регулярки не помогут при особо запущенных случаях
Я про замену
6. Qwertty - 16 Июня, 2015 - 14:22:48 - перейти к сообщению
LIME пишет:
Ой снова здорова
Может кто и заморочится и увидит ошибку но я нормальный ленивый разраб
Я умею дебажить
Чего и тебе советую
Хром ф12 вкладка сеть
Покажет тебе что куда улетает и что откуда прилетает
Удачи


Одну ошибку таким способом нашёл (лишняя ");"), правда её исправление ни к чему не привело ) данные как не отправлялись так и не отправляются. вроде передаются на php-скрипт, но хз, первый раз дебаггер юзаю, без пол литра не поймёшь
7. LIME - 16 Июня, 2015 - 14:28:42 - перейти к сообщению
http://phpfaq[dot]ru/debug/
Прочесть не менее восьми раз
Это не шутка
Быстрее будет восемь раз прочесть чем приставать к людям и днями искать ошибку
Потом еще 4 раза прочесть
http://learn[dot]javascript[dot]ru/devtools
В итоге потратишь еще полчаса но сэкономишь себе уйму времени в будущем
Если через 15кратного чтения не поможет тогда возвращайся
Тогда наверное действительно трудноотлавливаемая ошибка
Ито...навсякий еще по разу прочти и попробуй сам чтоб точно в тебя не плевали
(Добавление)
Подсказка...раз не улетают значит проблема в фронт скрипте
Выше есть ссылка как ее найти
8. Qwertty - 17 Июня, 2015 - 14:39:58 - перейти к сообщению
LIME пишет:
http://phpfaq[dot]ru/debug/
Прочесть не менее восьми раз
Это не шутка
Быстрее будет восемь раз прочесть чем приставать к людям и днями искать ошибку
Потом еще 4 раза прочесть
http://learn[dot]javascript[dot]ru/devtools
В итоге потратишь еще полчаса но сэкономишь себе уйму времени в будущем
Если через 15кратного чтения не поможет тогда возвращайся
Тогда наверное действительно трудноотлавливаемая ошибка
Ито...навсякий еще по разу прочти и попробуй сам чтоб точно в тебя не плевали
(Добавление)
Подсказка...раз не улетают значит проблема в фронт скрипте
Выше есть ссылка как ее найти


Ты бы меня ещё в ВУЗ отправил на программиста учиться )) Справочники то я знаю итак что существуют, но форум же создан не для обменом ссылок на них ) Есть конкретный пример и нужна конкретная помощь по нему.
Я не очень пойму в чём ошибка по следующей причине.
1. Если отправка происходит не через AJAX, а средствами HTML, обработчик обрабатывает запрос корректно.
2. Если отправить этот запрос через AJAX, то не обрабатывает.
3. Если отправить этот запрос через AJAX на другой обработчик (Sendmail), всё работает.
Вот я и думаю в чём косяк, переменные ведь те же, но почему-то обработчик не хочет отправлять AJAX-запрос в базу.
9. LIME - 17 Июня, 2015 - 14:49:13 - перейти к сообщению
Qwertty а как я тебе отвечу если мне надо дебажить чтоб ответить?
А сам ты вишь отказываешься
Дебажить для тебя не кашерно вишьли
Иди читай
10. Sail - 17 Июня, 2015 - 15:40:38 - перейти к сообщению
Qwertty пишет:
Вот я и думаю в чём косяк, переменные ведь те же, но почему-то обработчик не хочет отправлять AJAX-запрос в базу.

А Вы сверьте набор передаваемых Вами в $[dot]post() параметров с описанием функции...
Внимательно сверьте...
11. IllusionMH - 17 Июня, 2015 - 16:42:39 - перейти к сообщению
Sail, Ха-ха даже форматирование в пером посту помогает понять .
12. Qwertty - 17 Июня, 2015 - 18:33:07 - перейти к сообщению
Sail пишет:

А Вы сверьте набор передаваемых Вами в $[dot]post() параметров с описанием функции...
Внимательно сверьте...


Скажите уже конкретно в чём косяк Улыбка
(Добавление)
В общем я уже отчаялся, но внезапно решил проблему.

Проблема была оказывается тут



Сделал так

PHP:
скопировать код в буфер обмена
  1. if(isset($_POST))


и заработало.
13. DeepVarvar - 17 Июня, 2015 - 21:32:16 - перейти к сообщению
Qwertty пишет:
Сделал так ... и заработало

Нажмите для увеличения


Он всегда isset...
14. Qwertty - 17 Июня, 2015 - 21:34:19 - перейти к сообщению
Теперь другой вопрос, как очистить форму после отправки данных? )
(Добавление)
DeepVarvar пишет:
Qwertty пишет:
Сделал так ... и заработало

Нажмите для увеличения


Он всегда isset...


Пока так сойдёт))
15. Sail - 17 Июня, 2015 - 22:34:18 - перейти к сообщению
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...

 

Powered by ExBB FM 1.0 RC1