|
GET запрос путем XMLHttpRequest
|
| Автор |
Сообщение |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Чт, 12 Мар, 2009 18:57 Заголовок сообщения: GET запрос путем XMLHttpRequest |
|
|
Добрые сутки!
| Код: |
var url = "/libs/mail.php?sender="+escape(senderEmail)+"&name="+escape(senderName) +"&message="+escape(messageBody);
request.open("GET", url, true);
|
дан код. естественно request = new XMLHttpRequest. Он передает данные PHP. Вот как выглядит скрипт.
| Код: |
$text = "Доброе время суток!\n С формы обратной связи сайта ****** было написано следующее сообщение. \n"
.urldecode ($_GET["message"])."\n Адрес отправителя: ".urldecode($_GET["sender"]).". Имя: ".urldecode($_GET["name"]).".\n Всего доброго";
$isSend = mail($address, $subject, $text, "Content-type=text/plain; charset=windows-1251");
|
реализация работает. вот только в теле письма постоянно вместо данных одна хрень в виде url данных, типа %u0444%u043E%u043C%u043A%u0430. Так тока с киррилицей, латиница все в порядке.
Что делать? что не так?
простите но тока учусь JavaScript и AJAX так что не пинайте сильно, а просто подскажите. _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus Призрак Лорда


Зарегистрирован: 26.07.2007 Сообщения: 5092
42282 
|
Добавлено: Чт, 12 Мар, 2009 22:57 Заголовок сообщения: |
|
|
Roma-i-alena
а накой там urldecode?.. 0o _________________

До выхода LiteDiary 0.3.0: парам-пам-пам-пам! Она уже здесь! |
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 08:08 Заголовок сообщения: |
|
|
Да эт я пробовал и так и так уже. не работает и с urldecode и без него. _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Пт, 13 Мар, 2009 08:28 Заголовок сообщения: |
|
|
Roma-i-alena,
encodeURIComponent в JS попробуй!
urldecode впринципе ненужен.  _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 10:28 Заголовок сообщения: |
|
|
encodeURIComponent
Чет я не пойму, как JS код использовать в php скрипте? это просто скрипт, без html и т.д., он даже в браузер не попадает, просто отправляет почту с заданными параметрами. _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Пт, 13 Мар, 2009 10:56 Заголовок сообщения: |
|
|
Roma-i-alena,
да уж...
| Код: | | var url = "/libs/mail.php?sender="+encodeURIComponent(senderEmail)+"&name="+encodeURIComponent(senderName) +"&message="+encodeURIComponent(messageBody); |
При чем тут пхп? encodeURIComponent -- JavaScript функция. _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 11:58 Заголовок сообщения: |
|
|
так функция то, раскодирует и в GET пойдет обычный текст с пробелами и кирилицей. сами вы, да уж...
| Цитата: | | encodeURIComponent -- JavaScript функция. |
это я и спрашивал, в том то и вопрос был, если вы не поняли, что декодировать нужно после того, как данные попадут в скрипт отправки писем. _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Пт, 13 Мар, 2009 13:58 Заголовок сообщения: |
|
|
Roma-i-alena,
Нужно перед отправкой данные заэнкодить этой функцией,
как я выше написал, а в пхп ничего ненадо разенкодивать, пхп
сам все автоматически подгатавливает...
Вот пример:
backend.php
| Код: | <?php
echo "Hello, {$_REQUEST['name']}!";
?> |
fronted.js
| Код: | var xmlhttpreq = new XMLHttpRequest();
xmlhttpreq.open('GET', 'backend.php?name='+encodeURIComponent("some_name"), true);
xmlhttpreq.onreadystatechange = function() {
if (this.readyState == 4) {
if(this.status == 200) {
alert(this.responseText);
}
}
};
xmlhttpreq.send(null); |
http://test.systemnik.net.ru/ajax/ _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 15:15 Заголовок сообщения: |
|
|
ага =)
улыбнуло. Латиница и так передаеться, без всяких кодов и декодов, а вы вот попробуйте подсунуть туда кирилицу. _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 15:52 Заголовок сообщения: |
|
|
простите.
Тогда, ткните носом. Чет я не пойму!!!
| Код: | function sendMess () {
var senderName = document.getElementById("name").value;
var senderEmail = document.getElementById("mail").value;
var messageBody = document.getElementById("message").value;
var url = "/libs/mail.php?sender="+encodeURIComponent(senderEmail)
+"&name="+encodeURIComponent(senderName)
+"&message="+encodeURIComponent(messageBody);
request.open("GET", url, true);
request.onreadystatechange = isSend;
request.send(null);
} |
Форма в html файле
| Код: |
<form>
<p><input type="text" size="25" id="name"/> Как вас зовут?</p>
<p><input type="text" size="25" id="mail"/> Ваш email</p>
<textarea rows="4" cols="40" id="message"></textarea>
<p><input type="button" value="Отправить" onclick="sendMess();"/></p>
</form> |
спасибо _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus Призрак Лорда


Зарегистрирован: 26.07.2007 Сообщения: 5092
42282 
|
Добавлено: Пт, 13 Мар, 2009 15:57 Заголовок сообщения: |
|
|
Roma-i-alena
в PHP? _________________

До выхода LiteDiary 0.3.0: парам-пам-пам-пам! Она уже здесь! |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Пт, 13 Мар, 2009 16:26 Заголовок сообщения: |
|
|
нестоит... ничего страшного
| Цитата: | | request.onreadystatechange = isSend; |
Код функции isSend?
PHP код покажите  _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Roma-i-alena 11 1110 1000


Зарегистрирован: 03.05.2007 Сообщения: 1133 Откуда: vladimir 6191 
|
Добавлено: Пт, 13 Мар, 2009 17:06 Заголовок сообщения: |
|
|
| Код: | function isSend () {
if (request.readyState == 4) {
if (request.status == 200) {
var answer = request.responseText;
if (answer == 1) {
document.forms[0].reset();
alert ("Спасибо большое. Ваше сообщение отправлено");
} else {
alert ("К сожалению ваше сообщение не отправлено. Попробуйте еще раз");
}
} else
alert ("Error! Request status is " + request.status);
}
} |
| Код: | <?php
//Файл для отправки сообщений с формы обратной связи
$address = "****@******.***";
$subject = "Сообщение с сайта ******";
$text = "Доброе время суток!\n С формы обратной связи сайта ****** было написано следующее сообщение. \n"
.$_GET["message"]."\n Адрес отправителя: ".$_GET["sender"].". Имя: ".$_GET["name"].".\n Всего доброго";
$isSend = mail($address, $subject, $text, "Content-type=text/plain; charset=windows-1251");
echo $isSend;
?> |
только после замены escape на encodeURIComponent - вместо предидущих знаков в теле письма пошли вот такие кракозябры Просто тест, может Михалицын Рё прав? _________________ Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Пт, 13 Мар, 2009 17:29 Заголовок сообщения: |
|
|
Roma-i-alena,
уберите явное указание кодировки письма или замените её на utf-8.  _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
|