Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.12.2013, 18:16
Интересующийся
Посмотреть профиль Найти все сообщения от moskitos80
 
Регистрация: 11.08.2013
Сообщений: 28

Цитата:
а причем тут загрузка файлов? И как аякс будет работать без JS по-твоему?
Вообще, конечно, загрузка файлов и аякс здесь не причем. Просто статья так называется. В ней есть ответ на заданный вопрос. Если указать в теге формы атрибут target, который будет ссылаться на iframe- то по событию отправки формы страница не будет перезагружена, а результат ответа сервера отобразится в указанном iframe.
Цитата:
И кстати, разве doctype что-либо позволяет/запрещает
На сколько я помню есть doctype которые запрещают использовать iframe/
Ответить с цитированием
  #12 (permalink)  
Старый 17.12.2013, 18:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от moskitos80
На сколько я помню есть doctype которые запрещают использовать iframe/
Верно. Но это все пережитки прошлого. Да и браузеры забивают на все эти формальные запреты в угоду максимальной работоспособности.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #13 (permalink)  
Старый 17.12.2013, 19:12
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Беда прямо какая-то с этим, вроде простая отправка на мыло...

Вариант с FormData работает только в Хроме - во всех остальных ничего не происходит, php-скрипт даже не выполняется.
Вариант с serialize вообще не работает нигде.

Вариант по ссылке moskitos80 вроде можно обойтись без js, но тогда, насколько я понял, достаточно просто добавить атрибут target в form и какой-то фрейм - в этом весь смысл статьи? Js всё равно придется делать, иначе как окошко, что сообщение отправлено или нет вывести?
Ответить с цитированием
  #14 (permalink)  
Старый 17.12.2013, 19:15
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

С FormData даже в хроме то работает, то нет.
Выдаёт сообщение:

Warning: mail()[function.mail]: Could not execute mail delivery program '/usr/sbin/sendmail -t -i' in /home/uez-host/uez.ru/docs/sendmail.php on line 11

Это уже проблемы на стороне хостера? К ним стучать?
Ответить с цитированием
  #15 (permalink)  
Старый 17.12.2013, 19:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Riddik
Вариант с serialize вообще не работает нигде.
Покажи как ты пытаешься его использовать. Ты обновил код после моей правки var i = 0? Какие ошибки? F12 жал в браузере?
Сообщение от Riddik
Это уже проблемы на стороне хостера? К ним стучать?
Может ограничение на кол-во отправок в минуту?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #16 (permalink)  
Старый 17.12.2013, 19:51
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Вариант с target везде сработал, спасибо!
Ответить с цитированием
  #17 (permalink)  
Старый 17.12.2013, 19:52
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Сообщение от danik.js
Покажи как ты пытаешься его использовать. Ты обновил код после моей правки var i = 0? Какие ошибки? F12 жал в браузере?
Да, жал - никаких ошибок нет.

Вот полный код:

<script>
function isSubmittable(control)
{
    var element = control.nodeName.toLowerCase();
    if(['textarea'].indexOf(element) > -1) return true;
    if(element == 'input')
	{
        if(['submit', 'button'].indexOf(control.type) > -1) return false;        
        return true;
    }
    return false;
}
    
function serialize(form)
{
    var segments = [];
    for(var i = 0, control; control = form.elements[i]; i++)
	{
        if (!control.name || control.disabled || !isSubmittable(control)) continue;
        segments.push(encodeURIComponent(control.name) + '=' + encodeURIComponent(control.value));
    }
    return segments.join('&');
}

function sendForm(form, success)
{
    var request = new XMLHttpRequest();
    request.open(form.method, form.action);
    request.onreadystatechange = function() {
        if (request.readyState == request.DONE) {
            if (request.status == 200) {
                success(request.responseText);
            }
        }
    };	
    request.send(serialize(form));
}
</script>
<h3>Форма отправки обращения</h3>
<form onsubmit="return sendForm(this, alert), false" action="../sendmail.php" method="post">
	<p><input type="text" size="40" placeholder="Ваше имя" name="user"></p>			
	<p><input type="text" size="40" placeholder="E-mail" name="email"></p>
	<p><input type="text" size="40" placeholder="Тема письма" name="subj"></p>
	<p>Текст обращения<Br>
	<textarea placeholder="Текст обращения" name="text" cols="40" rows="6"></textarea></p>
	<p><input type="submit" value="Отправить" name="submit_form1"></p>						
</form>
Ответить с цитированием
  #18 (permalink)  
Старый 17.12.2013, 20:04
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Сообщение от danik.js
Может ограничение на кол-во отправок в минуту?
Непохоже, пробовал несколько подряд отправлять - уходят. Затем через какое-то время не уходят.

Кстати, ответ сервера на срочку в php-скрипте:
header('Content-Type: text/html; charset=utf-8');

Warning: Cannot modify header information - headers already sent by (output started at /home/uez-host/uez.ru/docs/sendmail.php:1) in /home/uez-host/uez.ru/docs/sendmail.php on line 2

Что за ерунда? Как он может быть уже установлен?
Настройки сервера виноваты? Т.к. на другом хосте этот же код работает как часы.
Ответить с цитированием
  #19 (permalink)  
Старый 17.12.2013, 22:42
Интересующийся
Посмотреть профиль Найти все сообщения от moskitos80
 
Регистрация: 11.08.2013
Сообщений: 28

Сообщение от Riddik Посмотреть сообщение
Непохоже, пробовал несколько подряд отправлять - уходят. Затем через какое-то время не уходят.
На моей практике было подобное, когда почтовая служба не успевала разгребать очередь сообщений. Но тут все вопросы к хостеру.

Сообщение от Riddik Посмотреть сообщение
Кстати, ответ сервера на срочку в php-скрипте:
header('Content-Type: text/html; charset=utf-8');

Warning: Cannot modify header information - headers already sent by (output started at /home/uez-host/uez.ru/docs/sendmail.php:1) in /home/uez-host/uez.ru/docs/sendmail.php on line 2

Что за ерунда? Как он может быть уже установлен?
Настройки сервера виноваты? Т.к. на другом хосте этот же код работает как часы.
- Такое бывает, когда на серверной стороне в PHP - скрипте произведен любой вывод в буфер (читай - отправка клиенту) какой либо из функций печати или попался файл с кодировкой utf-8 с маркером порядка байтов. В любом случае перед каким либо выводом в буфер сервер отсылает http - заголовки, что бы потом послать буфер в теле запроса. Следовательно после вывода он заголовки уже отослать не может, о чем тебе и сообщается - эта проблема решается в коде переносом строки:
header('Content-Type: text/html; charset=utf-8');

до момента какого либо вывода либо с использованием механизма буферизации опять же можно у меня глянуть: PHP: Буферизация вывода
Ответить с цитированием
  #20 (permalink)  
Старый 18.12.2013, 01:42
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

moskitos80,
так и есть, спасибо большое за помощь!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
Отправка данных формы AJAX`ом? Jopses jQuery 4 20.02.2013 12:34
Добовление формы еще Kuklavod jQuery 2 03.11.2011 15:12
Валидация формы dmsuslov jQuery 4 05.11.2010 16:12
Простая проверка формы. Добавить "динамики". Jurasmi Элементы интерфейса 3 07.04.2010 16:48