Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не получается отправить форму с калькулятора (https://javascript.ru/forum/dom-window/69161-ne-poluchaetsya-otpravit-formu-s-kalkulyatora.html)

laimas 02.06.2017 17:18

Как вам еще объяснить я не знаю.

$this->area = trim(stripslashes($details['area'])); - это не гарантия того, что в $details['area'] вообще что-то есть (тоже самое и остальное). Надеяться на то, что клиент проверяет? Так это глупо. А отправлять почту по адресу $this->my_mail не проверяя его вообще, так это недопустимо!

$this->subject = "Заказ с калькулятора!"; в таком виде можно просто и не прочесть.

$this->response_status всегда равен 1, то есть иного и не дано, проверять что именно так на клиенте уже бессмысленно.

То есть код такой - пуста или нет форма, в любом случае отправка и клиент получает ответ (JSON). Открывайте отладчик и смотрите в нем, чем отвечает сервер.

Igorsrt 02.06.2017 18:52

что я могу сказать?... "грешно смеяться над убогими" - я же сразу признался, что в js понимаю мало (практически ничего). :(
По своей наивности надеялся, что если на одном вордпресс-сайте все это работает, то и на другом должно (кстати, на исходном сайте в скрипте вместо jQuery стояло $, но у меня на это сразу консоль начала ругаться и я поменял везде - может где-то не надо было...)
...надеялся на помощь "для чайников" (

laimas 02.06.2017 19:06

Цитата:

Сообщение от Igorsrt
"грешно смеяться над убогими

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

Цитата:

Сообщение от Igorsrt
кстати, на исходном сайте в скрипте вместо jQuery стояло $, но у меня на это сразу консоль начала ругаться

Это потому, что $ могут использовать и другие фреймоворки. Можно вместо этого использовать jQuery или же jQuery.noConflict().

Мне то собственно все равно, хотите используйте этот дырявый код, дело ваше. А для того, почему не получается, хотя если вы считаете, что все ОК и должно, откройте отладчик браузера и проверьте в нем ответ сервера на запрос. Это ведь сделать не сложно.

Igorsrt 02.06.2017 19:17

Цитата:

Сообщение от laimas (Сообщение 454294)
А для того, почему не получается, хотя если вы считаете, что все ОК и должно, откройте отладчик браузера и проверьте в нем ответ сервера на запрос. Это ведь сделать не сложно.

Наверное не сложно, но я не умею видимо (... там где я смотрю в хроме, отображаются только js и css файлы (а этот скрипт встроен в php)...
...про то что там все сделано "не правильно и плохо" я не спорю (потому что не особо понимаю, но догадываюсь что так оно и есть)... но пусть лучше пока так, чем никак

laimas 02.06.2017 19:24

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

Igorsrt 02.06.2017 19:59

как всегда "методом тыка" и буржуйским гуглом мне удалось решить проблему: строчка
data = JSON.parse(data);

просто не нужна в этом скрипте и вызывала ошибку “Uncaught SyntaxError: Unexpected token o” в консоли... жалко только что убил на это весь день (

laimas 02.06.2017 20:30

А кто ее туда вставил? :)

О JSON.parse(data) говорилось в самом начале, что это такое и зачем.

Просто запомните на будущее - если методу .post не указать явно тип принимаемых данных, то он попытается их определить сам (при передаче заголовка сервером - гарантированно). Если это будет json, то вы получите готовый объект, а значит попытка его парсить как json JSON.parse вернет ошибку.

Гуглить полезно, но куда полезнее знать что отправляет клиент и что получает в ответ. Методы тыка тут не действуют.

Igorsrt 02.06.2017 20:36

я согласен с Вами, но учить некому... так что вот "тыкаюсь"... спасибо )

Igorsrt 03.06.2017 10:59

Цитата:

Сообщение от laimas (Сообщение 454305)
А кто ее туда вставил? :)

Какой-то гад её туда вставил... но ведь все работало на том сайте - в чем разница: в хостинге или версии jquery? :)

laimas 03.06.2017 11:44

Цитата:

Сообщение от Igorsrt
в чем разница: в хостинге или версии jquery?

В типе данных возвращаемых сервером и на кого возлагается их обработка.

Например, пусть их обрабатывает клиент и он ожидает JSON, а посему получает объект самостоятельно JSON.parse(data). И если это отдать на откуп этим братьям, серверу и клиенту, не контролируя процесс, то есть большая вероятность ошибок на клиенте. Например, при ошибках на сервере, клиенту будет возвращен не JSON, а сообщение об ошибке, формат вывода которых не является валидным json, будет возникать ошибка на клиенте.


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