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 :: Что должен вернуть Аякс при при отправки такой формы?

 PHP.SU

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


 Страниц (1): [1]   

> Без описания
Алексей_М
Отправлено: 28 Января, 2016 - 22:15:26
Post Id


Гость


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


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




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.ajax({
  3. type: 'POST',
  4. url: 'ok.php',
  5. data: $("#forma1").serialize(),
  6. success: function(data) {
  7. if(data == "true") {
  8.  


разбираюсь с аяксом, подскажите пожалуйста, что прописать в ok.php чтобы в data отдать true?

(Отредактировано автором: 28 Января, 2016 - 22:43:00)

 
 Top
DelphinPRO
Отправлено: 28 Января, 2016 - 22:48:32
Post Id



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


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


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





(Добавление)
Но лучше сделать так

CODE (javascript):
скопировать код в буфер обмена
  1. $.ajax({
  2. type: 'POST',
  3. url: 'ok.php',
  4. dataType: 'json', // тип возвращаемых данных
  5. data: $("#forma1").serialize(),
  6. success: function(data) {
  7. if(data.status == true) {


и в php

PHP:
скопировать код в буфер обмена
  1. $response = [];
  2. $response['status'] = true;
  3. $response['message'] = 'Ok!'; // Можно передать дополнительные данные
  4. echo json_encode($response);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Алексей_М
Отправлено: 28 Января, 2016 - 23:06:07
Post Id


Гость


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


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




странно, у меня какая-то ерунда получается,

файл обработчик ok.php
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "true";
  3. $file = fopen("test.txt","a");
  4.  
  5. fwrite ($file,"123\n");
  6.  
  7.  


если к нему просто обратится, выводит true на экран через echo

если как полагается дёрнуть его через форму, то он не видит true
т.е. условие когда data = true срабатывает только если сделать принудительно что не равно

т.е.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. success: function(data) {
  4. if(data !== "true") {
  5.        
  6. вот тогда оно выполнится
  7.  
  8.  



как это так??) хотя сам обработчик в файл пишет!

(Отредактировано автором: 28 Января, 2016 - 23:28:22)

 
 Top
Viper
Отправлено: 28 Января, 2016 - 23:30:18
Post Id



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


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


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




Алексей_М пишет:
условие когда data = true
а с чего бы.
1. у вас строка в ответе
2. http://javascript[dot]ru/comparison-operators
3. переделайте как показал DelphinPRO


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Алексей_М
Отправлено: 28 Января, 2016 - 23:41:29
Post Id


Гость


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


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




Viper

в смысле строка в ответе? так он же и посоветовал Echo 'true';
я и сравниваю
и так
if(data == "true")
и без кавычек
if(data == true)

всё равно не видит

как посоветовал, вообще даже не запускается тогда обработчик,

и
$response = [];

наверно надо так? $response = array();

(Отредактировано автором: 28 Января, 2016 - 23:47:09)

 
 Top
DelphinPRO
Отправлено: 29 Января, 2016 - 00:20:05
Post Id



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


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


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




Поясняю.
По умолчанию в настройках аякса жуйкверевского стоит тип возвращаемых данных "html". Т.е. это просто строка текста. Соответственно, чтобы вывести такой тип данный в php, достаточно просто сделать echo "строка". И со стороны javascript в коллбеке тоже будет строка. Поэтому сравнивать следует со строкой. Этот тип данных достаточно неудобен для того, чтобы управлять вариантами выполнения кода в javascript.

Гораздо лучше использовать тип "json".
В этом случае php должен отдавать валидный json-код, а jquery его незаметно для вас преобразует в объект, с которым удобно работать.
Получить валидный json-код на стороне php проще всего специально предусмотренной для этого функцией json_encode(). Ей можно передать массив (или объект) с данными, и впоследствии получить точно такой же массив в javascript. Почему это удобнее? Да потому что можно передать кучу разных данных, разных типов (строки, числа, булевые значения), и иметь к ним раздельный доступ.

По-моему здесь всё предельно просто.

Алексей_М пишет:
$response = [];
наверно надо так? $response = array();

Если у вас php версии до 5.3, то да, короткий синтаксис массивов там не поддерживается.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Алексей_М
Отправлено: 29 Января, 2016 - 00:42:42
Post Id


Гость


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


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




DelphinPRO

да, php 5.2.17, короткий не поддерживается.

может еще что-то не поддерживается, потому что не работает?

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

к тому же покрутил разные скрипты аяксовские, на одном хостинге работают (не Ваш и не мой пример, а просто другие), а на другом пишет например:
SyntaxError: JSON.parse: unexpected character

причём скрипты одинаковые!

возвращаясь к началу, можно упрощённо проверить обратку от обработчика, потому что ни мой ни Ваш вариант не работает.
 
 Top
IllusionMH
Отправлено: 29 Января, 2016 - 00:56:37
Post Id



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


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


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




Алексей_М, открываете дев тулы в браузере (Ctrl + Shift + I или F12), делайте Ajax и смотрите что возвращает сервер. Там будет виднее
 
 Top
Алексей_М
Отправлено: 29 Января, 2016 - 00:58:11
Post Id


Гость


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


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




да нет что-то

если заменить старый код

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $.ajax({
  4. type: 'POST',
  5. url: 'ok.php',
  6. data: $("#forma1").serialize(),
  7. success: function(data) {
  8. if(data == "true") {
  9.                        
  10.  



на предлагаемый:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $.ajax({
  4. type: 'POST',
  5. url: 'ok.php',
  6. dataType: 'json',                              
  7. data: $("#forma1").serialize(),
  8. if(data.status == true) {
  9.          
  10.  


то файл ok.php даже не дёргает при субмите форму
и при не заполенных полях формы даже не выделяются поля красным (мол ошибка), при моём варианте выделяются.

может и тут старая версия?
jquery-2.0.0.min.js

(Отредактировано автором: 29 Января, 2016 - 00:59:43)

 
 Top
IllusionMH
Отправлено: 29 Января, 2016 - 01:10:52
Post Id



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


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


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




Алексей_М, если второй блок кода - копипаста, то там не хватает
CODE (javascript):
скопировать код в буфер обмена
  1. success: function(data) {


Главное что в консоле барузера пишет
 
 Top
DelphinPRO
Отправлено: 29 Января, 2016 - 01:23:59
Post Id



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


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


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




Алексей_М пишет:
то файл ok.php даже не дёргает при субмите форму
и при не заполенных полях формы даже не выделяются поля красным (мол ошибка), при моём варианте выделяются.


Вы в консоль браузера-то заглядывайте иногда. Там отображаются все сообщения об ошибках. И такие ляпы сразу можно найти.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Алексей_М
Отправлено: 29 Января, 2016 - 01:33:15
Post Id


Гость


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


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




IllusionMH точно! всю голову сломал, а оказывается...

да, так работает, спасибо большое!

там где выдавал SyntaxError: JSON.parse: unexpected character
там PHP 5.1.2 без jsone вроде

DelphinPRO благодарю!
Ваш пример получился.
Правда как строки сравнить, по примитивному примеру, пока не ясно, хоть и не нужно, но просто интересноУлыбка

(Отредактировано автором: 29 Января, 2016 - 01:40:36)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB