Добрый вечер. Есть html форма с multiple input. Уже все перепробовал но не могу передать в скрипт все выбранные значения поля в срипт формирующий и отсылающий письмо. Помогите пожалуйста. Буду очень благодарен. Код всех частей ниже. HTML: Код (Text): <form method="POST" id="feedback-form"> <h4>Как к Вам обращаться:</h4> <input type="text" name="name" required placeholder="Фамилия Имя Отчество" x-autocompletetype="name"> <h4>Ваш Email для связи:</h4> <input type="email" name="email" required placeholder="Ваш Email" x-autocompletetype="email"> <h4>Ваш телефон:</h4> <input type="text" name="number" required placeholder="Ваш Телефон" x-autocompletetype="number"> <h4>Услуга:</h4> <p>Для выбора нескольких услуг зажмите клавишу CTRL</p> <select name="type" multiple="multiple" id="feedback-form" style="width:100%;"> <option value="search1" id="feedback-form">От "А" до "Я"</option> <option value="search2" id="feedback-form">Конкуренция</option> <option value="search3" id="feedback-form">Потребительский Охват</option> <option value="search4" id="feedback-form">Отдельные Направления</option> <option value="creative1" id="feedback-form">Разработка идеи рекламной кампании</option> <option value="creative2" id="feedback-form">Видеоформаты</option> <option value="creative3" id="feedback-form">Аудиоформаты</option> <option value="creative4" id="feedback-form">Баннерная реклама</option> <option value="placement1" id="feedback-form">Рекламная кампания "ВКонтакте"</option> <option value="placement2" id="feedback-form">Рекламная кампания в "Facebook"</option> <option value="placement3" id="feedback-form">Рекламная кампания в "Instagram"</option> <option value="auto" id="feedback-form">Автоматизация рабочих процессов (Excel, Power Point macro)</option> </select> <h4>На какую аудиторию вы сейчас ориентируетесь? (Распределение по возрасту, полу, доходу, городам и прочее):</h4> <textarea name="ta" required rows="5"></textarea> <h4>Вашы конкуренты и компании на которые вы ориентируетесь:</h4> <textarea name="competitors" required rows="5"></textarea> <h4>Информация про вашу компанию:</h4> <textarea name="company" required rows="5"></textarea> <h4>Любая дополнительная информация:</h4> <textarea name="information" required rows="5"></textarea> <div align="center"><input type="submit" name="submit" style="width: 150px;" value="Oтправить"></div> </form> <script> document.getElementById('feedback-form').onsubmit = function(){ var http = new XMLHttpRequest(); http.open("POST", "sendmail.php", true); http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); http.send("name=" + this.name.value + "&email=" + this.email.value + "&number=" + this.number.value + "&type=" + this.type.value + "&ta=" + this.ta.value + "&competitors=" + this.competitors.value + "&company=" + this.company.value + "&information=" + this.information.value); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении суток.\nБлагодарим за интерес к нашей компании!'); } } http.onerror = function() { alert('Извините, данные не были переданы'); } return false; } </script> PHP: Код (Text): <?PHP header("Content-Type: text/html; charset=utf-8");?> <? if (array_key_exists('name', $_POST)) { mail("triangle.clients@gmail.com", $_POST['name'], "<h3>Name:</h3>".$_POST['name']."<br/><h3>Email:</h3> ".$_POST['email']."<br/><h3>Number:</h3> ".$_POST['number']."<br/><br/><h3>Services:</h3>".$_POST['type']. "<br/><br/><h3>Target Audience:</h3> ".$_POST['ta']."<br/><h3>Competitors:</h3> ".$_POST['competitors']."<br/><h3>Company:</h3> ".$_POST['company']."<br/><h3>Additional Information:</h3> ".$_POST['information'],"Content-Type: text/html; charset=utf-8"); echo $_POST['name']; } ?>
Функция и не отрабатывает. Элементарно же проверить, ну. вместо Код (Text): document.getElementById('feedback-form').onsubmit = function(){ делаем Код (Text): function aaa(){ в Код (Text): <form method="POST" id="feedback-form"> добавляем Код (Text): <form method="POST" id="feedback-form" onsubmit="aaa();return false;">
Подскажите, так а как сделать форму полностью рабочей? Можете исправить? А то письма приходят с формы, но лишь с одной из выбранных опций.
Я так понимаю, скрипт под формой (оба в html) собирает с нее values полей и передает в скрипт "sendmail.php", который формирует письмо и отсылает его. Все работает, только с поля с мультивыбором (name="type") приходит только одно выбранное значение, первое, а не все выбранные. Как это исправить в этих трех кусках кода, чтобы поле "type" тоже нормально обрабатывалось и приходил масивв ответов? Помогите пожалуйста. Пример сообщения, которое приходит: Код (Text): Name: MaximOsovitny Email: maximosovitny@gmail.com Number: 0930613165 Services: creative1 Target Audience: ТА Competitors: какие-то конкуренты Company: компания Additional Information: дополнительна информация
В общем, пробуйте. Не особо я силён в js, да и, насколько я помню, XMLHttpRequest() не кроссбраузерен. HTML Код (PHP): <!DOCTYPE HTML> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> </head> <body> <form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()"> <h4>Как к Вам обращаться:</h4> <input type="text" name="name" required placeholder="Фамилия Имя Отчество" x-autocompletetype="name"> <h4>Ваш Email для связи:</h4> <input type="email" name="email" required placeholder="Ваш Email" x-autocompletetype="email"> <h4>Ваш телефон:</h4> <input type="text" name="number" required placeholder="Ваш Телефон" x-autocompletetype="number"> <h4>Услуга:</h4> <p>Для выбора нескольких услуг зажмите клавишу CTRL</p> <select name="type[]" multiple style="width:100%;"> <option value="search1" >От "А" до "Я"</option> <option value="search2" >Конкуренция</option> <option value="search3" >Потребительский Охват</option> <option value="search4" >Отдельные Направления</option> <option value="creative1" >Разработка идеи рекламной кампании</option> <option value="creative2" >Видеоформаты</option> <option value="creative3" >Аудиоформаты</option> <option value="creative4" >Баннерная реклама</option> <option value="placement1" >Рекламная кампания "ВКонтакте"</option> <option value="placement2" >Рекламная кампания в "Facebook"</option> <option value="placement3" >Рекламная кампания в "Instagram"</option> <option value="auto" >Автоматизация рабочих процессов (Excel, Power Point macro)</option> </select> <h4>На какую аудиторию вы сейчас ориентируетесь? (Распределение по возрасту, полу, доходу, городам и прочее):</h4> <textarea name="ta" required rows="5"></textarea> <h4>Вашы конкуренты и компании на которые вы ориентируетесь:</h4> <textarea name="competitors" required rows="5"></textarea> <h4>Информация про вашу компанию:</h4> <textarea name="company" required rows="5"></textarea> <h4>Любая дополнительная информация:</h4> <textarea name="information" required rows="5"></textarea> <div align="center"><input type="submit" name="submit" style="width: 150px;" value="Oтправить"></div> </form> <script> function call() { var msg = $('#formx').serialize(); $.ajax({ type: 'POST', url: '2.php', data: msg, success: function(data) { alert('Очешуенно '); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } </script> </body> </html> PHP Код (PHP): <?php header("Content-Type: text/html; charset=utf-8"); $test = ""; foreach($_POST["type"] as $arr) { $test .= $arr."<br />"; } if (array_key_exists('name', $_POST)) { mail("mr.aakv@gmail.com", $_POST['name'], "<h3>Name:</h3>".$_POST['name']."<br/><h3>Email:</h3> ".$_POST['email']."<br/><h3>Number:</h3> ".$_POST['number']."<br/><br/><h3>Services:</h3>".$test. "<br/><br/><h3>Target Audience:</h3> ".$_POST['ta']."<br/><h3>Competitors:</h3> ".$_POST['competitors']."<br/><h3>Company:</h3> ".$_POST['company']."<br/><h3>Additional Information:</h3> ".$_POST['information'],"Content-Type: text/html; charset=utf-8"); echo $_POST['name']; } ?>
Ок. Но AJAX и XMLHttpRequest() - это не альтернативы друг друга. AJAX - название технологии, XMLHttpRequest - механизм, который обеспечивает ее работу в современных браузерах. По факту это одно и то же. Просто в JQuery сделали уровень абстракции чуть повыше. Но AJAX - это не изобретение автора JQuery. Просто у него функция для работы с AJAX-ом так и называется .ajax.