1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 163
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Подскажите, как прикрутить ajax?25.09.2015, 15:57. Показов 1364. Ответов 15
Метки нет (Все метки)
Здравствуйте. После двухнедельного искания формы с отправкой нескольких файлов на почту без перезагрузки, я её всё таки нашел. Но вот осталась одна проблема, как сюда добавить ajax? Посмотрите пожалуйста на код:
Пока что есть такой код.
P.S. Еще остаётся вопрос, как добавить анимацию загрузки? В какую строчку его засунуть ? Добавлено через 17 часов 36 минут Моя форма рабочая, только я не могу её видоизменить. Jquery ajax подключить не могу, и не могу добавить анимацию загрузки.
0
|
25.09.2015, 15:57 | |
Ответы с готовыми решениями:
15
AJAX: Как прикрутить счетчик товаров? подскажите с AJAX подскажите пожалуйста jQuery + ajax Ajax подгрузка контента подскажите |
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 16:03 | 2 |
Так вы же вроде бы его используете: "Пока что есть такой код."
Загружать файлы средствами Ajax, можно с помощью объекта FormData. Вот тут описано, как это можно сделать с помощью метода jQuery $.ajax(), без проблем это же реализуется на чистом JS. Нужно только учитывать, что объект FormData не такой уж кроссбраузерный. К примеру, IE ниже 10-ой версии его не поддерживает.
0
|
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 163
|
|
25.09.2015, 16:26 [ТС] | 3 |
я его не использую. Но он, как вы понимаете, не получает msg == 'ok' . Письма уходят, но только почему то без файлов... Подскажите, как ему передать msg == 'ok' и не терять функцию отправки файлов?
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
||||||
25.09.2015, 18:08 | 4 | |||||
drkrol, что-то я запутался слегка. Давайте по порядку:
1. Вы используете вариант на чистом JS? Если да, то вопрос о FormData снимается, т.к. он у вас там используется. 2. В консоли ошибки есть? 3. Что приходит ответом на ajax-запрос (посмотреть в той же консоли) 4. Вернуть ответ строкой "ok" можно с помощью echo, но у вас передаются другие данные (строка 42, 44). 5. В php Content-Type, Content-Transfer-Encoding, Content-Disposition - вроде как должны быть в заголовках, а вы их добавляете в тело сообщения. Да и можно не особо мучаясь, использовать библиотеку PHPMailer Добавлено через 1 час 18 минут drkrol, в общем, пока вы в раздумьях, попробуйте изменить php-код на этот:
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
||||||||||||||||
25.09.2015, 18:39 | 5 | |||||||||||||||
drkrol, вы привели в начале функцию
Смотрите, объект XMLHttpRequest как раз и занимается реализацией ajax. Он отправляет форму без перезагрузки страницы, а параметр true в строке
То, что вы написали потом - это тоже код, реализующий ajax, только уже с использованием сторонней библиотеки JQuery
Добавлено через 8 минут Тем более, что вторая функция не передает файлы.
0
|
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 163
|
|
25.09.2015, 19:19 [ТС] | 6 |
1. да, но я хочу использовать jquery ajax, потому что я хочу использовать $(".result").toggleClass("dis"); return false; и как то не очень выглядит простой js и jquery вместе, поэтому, я подумал, что ajax jquery лучше. Так хотя бы понятно, где положительный результат, а где отрицательный.
2. Нету. 3. У меня в консоли кроме того, что не найден favicon ничего не написано... 5. Я уже успел намучиться с phpmailer... Так что ajax лучше. наверно... 6. Не совсем понял зачем вы переписали php. хотя он имел не самый лучший вид. у вас всё по полочкам) 7. ajax jquery не отправляет файлы. Я так понимаю, что дело в formData. Если я в data напишу formdata, то не только файлы, но и письма отправляться не будут. Нужно что то написать в data и всё. И форма будет работать. наверно...
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 20:24 | 7 |
drkrol, в общем, чувствую, что будем ходить вокруг да около еще долго, поэтому я вам собрал всё вместе, в js два варианта: на чистом JS и jQuery (выберите любой). Всё проверено и работает. Только не забудьте вписать свой email! Данные, которые надо отправлять кроме файлов, допишите к переменной $message.
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 20:25 | 8 |
P.S. И не забывайте фильтровать все данные, которые приходят от клиента!!!
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
25.09.2015, 20:30 | 9 |
drkrol,
По 1 - гуглите jquery ajax files тогда. по 2 - Если вы про результат работы, то первая функция (она написана на чистом javascript) тоже выдавала результат успешно ли прошел запрос или нет. По 3 - Я пробовал ваш первый скрипт в совокупности с первой javascript функцией - ответ на ajax-запрос приходит нормально, письма отправлялись. По 5 - php-mailer никак не связан с ajax))) Ajax работает на стороне клиента и занимается обменом информацией с сервером. Php-mailer - это php-шная библиотека для отсылания писем, вам предлагали ее использовать вместо стандартной функции mail() только потому, что по сравнению с mail в php-mailer файл легче прикрепить к письму) По 6 - ну а переписали php потому, что в старом варианте заголовки каким-то образом оказались в теле письма. Вы откуда этот скрипт брали? Добавлено через 3 минуты Lazy_Den, а что фильтровать, то есть, как вы их предложили фильтровать?
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 20:46 | 10 |
Я ничего не предлагал. А способы фильтрации данных, пусть выбирает сам ТС. Если говорить о моих предпочтениях, то это функции filter_input(), filter_input_array() и другие фильтрующие функции
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
25.09.2015, 20:50 | 11 |
Lazy_Den, понятно, вроде как валидация и проверка переменных.
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 20:54 | 12 |
Поправка: валидация и/или очистка. Зависит от типа фильтра
1
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
25.09.2015, 21:28 | 13 |
Lazy_Den, я функции фильтрации не использовал (хотя бы потому, что не знал о них)), в основном, использовал подход с валидацией на клиенте + проверка на сервере.
К вопросу валидации введенного пользователем email в вашем примере - ведь это никак не влияет на работу скрипта, этот email указывается только как контактная информация. Или вы с расчетом на то, чтобы в будущем можно было добавить его в reply-to?
0
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|
25.09.2015, 21:40 | 14 |
b_cat, Если речь идёт только об email и вам безразлично, какой укажет пользователь, т.к. вы его нигде использовать не будете, то можно и забить на валидацию. Валидацию, но не фильтрацию в глубоком понимании этого слова! И тут плавно переходим дальше:
Очень зря. Проверка введенных данных на клиенте - это в основном для удобства пользователя, а проверка на сервере - это чтоб разработчик мог по ночам спать спокойно. Данные которые отправляются из формы, можно отправить и без самой формы, даже не заходя на сайт. И что это будут за данные, какой они могут нанести вред - уже вопрос, который должен волновать вас, как разработчика. Посему, независимо от того - есть каки-то проверки на клиенте или нет - а проверка на сервере должна быть обязательно и достаточно серьёзной.
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
25.09.2015, 22:58 | 15 |
Lazy_Den, согласен с вами, так я же не говорю, что нет. Поэтому я и использовал проверку данных на сервере, только без использования функций фильтров в php.
Что касается валидации на клиенте - это да, она нужна в основном для того, чтобы пользователь не ошибся, не сделал опечатку, не ввел по ошибке не то, что нужно. Добавлено через 2 минуты А вообще, спасибо, что разъяснили об этих функциях (фильтрации). Добавлено через 14 минут drkrol, у вас заработало решение, которое вам предложил Lazy_Den? Если да, то можно добавить индикатор отправления письма.
0
|
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 163
|
|
26.09.2015, 23:00 [ТС] | 16 |
Да. Благодарю! Всё работает как часы. Я сразу не ответил, потому что хотел под свои нужны допилить, а потом уже отчитаться о результате. Но у меня каждую минуту появляются новые проблемы с кодом. Сейчас вот, по своей неосторожности потерял свой js и php который относился к nouislider. Удалил... Теперь смотрю на код и вспомнить не могу, как же оно работало? От nouislider не уходят значения на почту. Пытаюсь заново всё собрать. Если вдруг вы знаете как можно отправить переменные со span, но без input hidden, посмотрите эту тему Как отправить переменную nouislider на почту не прибегая к input hidden? ... Еще раз спасибо вам!
0
|
26.09.2015, 23:00 | |
26.09.2015, 23:00 | |
Помогаю со студенческими работами здесь
16
Ребята подскажите какую Ajax библиотеку лучше выбрать? Как тут прикрутить settimeout? Как прикрутить cookies к меню на jQuery Подскажите как прикрутить переменную? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |