Ru-Board.club
← Вернуться в раздел «Web-программирование»

» HTML код не проходит через AJAX POST

Автор: vs6262
Дата сообщения: 07.03.2016 12:47
нижестоящий HTML код не проходит через AJAX POST
может кто поможет решить проблему ?


Код: <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
Автор: bordellinoff
Дата сообщения: 13.03.2016 16:12
@vs6262

попробовал и с $.post и с $.ajax -- всё прекрасно работает.
если выводятся ошибки, то неплохо было бы посмотреть на них, да и на ajax код тоже.
Автор: vs6262
Дата сообщения: 13.03.2016 17:41

Код: function getXMLObject() //XML OBJECT
{
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+
}
catch (e2) {
xmlHttp = false // No Browser accepts the XMLHTTP Object then false
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers
}
return xmlHttp; // Mandatory Statement returning the ajax object created
}

var xmlhttp = new getXMLObject();    //xmlhttp holds the ajax object

function ajaxFunction(_Parameters) {
// var str = new String(); //Used to prevent caching during ajax call
if(xmlhttp) {

//    xmlhttp.open("GET","Mailer?zzzz=" + encodeURIComponent("String - Стринг - &#21033;&#29992;&#26032;&#30340;"),true); //gettime will be the servlet name
    xmlhttp.open("POST","../../Mailer",true); //gettime will be the servlet name

xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; accept-charset="UTF-8"');
xmlhttp.send(_Parameters);
}
}

function handleServerResponse() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
//alert(xmlhttp.responseText); //Return String
_alert("Message",xmlhttp.responseText,"OK","#f5e8ce","#11ED32","#3498db","#CCCCCC");
}
else {
alert("Error during AJAX call. Please try again");
}
}
}
Автор: bordellinoff
Дата сообщения: 13.03.2016 19:50
@vs6262

попробовал ещё несколько раз -- передача и получение, кириллица и entities -- всё прекрасно работает :-(

Единственное место, по моему мнению, где могут быть ошибки -- _Parameters в функции ajaxFunction. Параметры могут оказаться некодированными, например:

var1=data:image==

var1=a&&&==

Неплохо бы проверить, что именно получается и отправляется на и с сервера.
Все функции, хотя и не оптимированы, но полностью рабочии.
Автор: vs6262
Дата сообщения: 13.03.2016 20:34
я _Parameters пропускаю каждый параметр через encodeURIComponent()

Добавлено:

Цитата:
encodeURIComponent()

может как то по другому кодировать-декодировать ?
Автор: vs6262
Дата сообщения: 21.04.2016 18:17
AJAX
[more]function _getAJAX( name, mydata )
{
var result = null;
var scriptUrl = name;
$.ajaxSetup({ cache: false });
$.ajax({
url: scriptUrl,
data: mydata,
type: 'POST',
dataType: 'html',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8', // this is the default value, so it's optional
async: false,
success: function(data) {
result = data;
}
});
return result;
}[/more]

Send.php
[more]<?PHP

function decodeURIComponent($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8');; }

function SendMail($Charset,$FromName,$FromEmail,$ToName,$ToEmail,$Subject,$Message){
    // mb_language("Ru"); // optional
    mb_internal_encoding($Charset);
    $From = mb_encode_mimeheader($FromName) . " <" . $FromEmail . ">";
    $To = mb_encode_mimeheader($ToName) . " <" . $ToEmail . ">";
    $Headers = "From: " . $From . "\r\n";
    $Headers .= 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset='.$Charset.'' . "\r\n";
//    mb_send_mail($To, "=?".$Charset."?B?".base64_encode($Subject)."?=", $Message, $Headers);
    mb_send_mail($To, $Subject, $Message, $Headers);
}


//if(isset($_POST['MessageSucesSended'])){
        SendMail("UTF-8",decodeURIComponent($_POST['FromName']),decodeURIComponent($_POST['FromEmail']),decodeURIComponent($_POST['ToName']),decodeURIComponent($_POST['ToEmail']),decodeURIComponent($_POST['Subject']),decodeURIComponent($_POST['Message']));
//SendMail("UTF-8","vb","bjdk@web.de","nlm","andr.vs90@gmail.com","su","me");

        echo 'nnиш';
/*    } else {
        
    }
*/
?>[/more]


Код: <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
Автор: Mavrikii
Дата сообщения: 21.04.2016 19:21
vs6262

Цитата:
может кто знает в чем причина ?

причина чего? не вижу проблемы
Автор: vs6262
Дата сообщения: 21.04.2016 20:10

Цитата:
причина чего? не вижу проблемы

не проходят картинки более 1-2КБ на мыло(в WYSIWYG Editor то они вставляются)
Автор: Mavrikii
Дата сообщения: 21.04.2016 20:20
vs6262

Цитата:
не проходят картинки более 1-2КБ на мыло

потому что скрипт обрезает строку где попало.
в base64 кодирует правильно, но обрезает, вставляет пробелы - это нарушает целостность и не позволяет декодировать обратно


переносить на новую строку можно, но пробелов быть вообще не должно
Автор: vs6262
Дата сообщения: 21.04.2016 20:45
Mavrikii
Спасибо, буду дебагерить

Добавлено:
похоже через AJAX не проходит, использую POST
Автор: Mavrikii
Дата сообщения: 21.04.2016 21:55
vs6262

Цитата:
похоже через AJAX не проходит, использую POST

не в ajax дело, а в том, что делает ваш скрипт перед отправкой на сервер. судя по логам в браузере данные отправляются уже разбитые

видны пробелы (или переносы строк, возможно).

вот как изначально выглядит в коде редактора (правильно)

пробелов нет, переносы строки показаны через /, что правильно

в общем у вас + заменяются на пробелы - не должно такого быть
Автор: vs6262
Дата сообщения: 21.04.2016 22:35

Цитата:
что делает ваш скрипт перед отправкой на сервер

encodeURIComponent()
Автор: Mavrikii
Дата сообщения: 21.04.2016 22:43
vs6262

Цитата:
encodeURIComponent()

да мне как то.. сами понимаете.
в чем проблема - я указал.. решение за вами.
ps: да и очевидно, что оно не удаляет плюсы - https://jsfiddle.net/b3p96w2c/
Автор: vs6262
Дата сообщения: 21.04.2016 22:49
может в PHP



Код: function decodeURIComponent($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8');; }
Автор: Mavrikii
Дата сообщения: 21.04.2016 22:53
vs6262

Цитата:
может в PHP  

я же показал, что еще до php, на момент отправки из браузера, плюсы уже заменены.


Цитата:
function decodeURIComponent($str)

зачем?? http://php.net/manual/en/function.urldecode.php
более того, насколько я знаю - полученные данные в php уже автоматически декодированы.
и еще более того - jquery сам все обрабатывает (смотря, конечно, как сериализовать данные)
http://api.jquery.com/jquery.ajax/

то есть

Код: $.ajax({
type : "GET",
url : "url.php",
data : {
field1 : '111',
field2 : '222'
}
});
Автор: vs6262
Дата сообщения: 21.04.2016 23:04
конфигурация tinyMCE


Код: <script>
tinymce.init({
selector: "#m_s_g",
width : 838,
height: 260,
resize: false,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste",
"textcolor legacyoutput image imagetools"
],
imagetools_toolbar: "rotateleft rotateright | flipv fliph | editimage imageoptions",
toolbar: "undo redo | bold italic | fontselect fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | link image",
paste_data_images: true,
images_upload_handler: function (blobInfo, success, failure) {
// no upload, just return the blobInfo.blob() as base64 data
success("data:" + blobInfo.blob().type + ";base64," + blobInfo.base64());
},
convert_urls: false,
content_css: 'fonts.css',
theme_advanced_font_sizes : "8px,10px,12px,14px,16px,18px,20px,24px,32px,36px",
theme_advanced_fonts : "Andale Mono=andale mono,times;"+
"Arial=arial,helvetica,sans-serif;"+
"Arial Black=arial black,avant garde;"+
"Book Antiqua=book antiqua,palatino;"+
"Comic Sans MS=comic sans ms,sans-serif;"+
"Courier New=courier new,courier;"+
"Century Gothic=century_gothic;"+
"Georgia=georgia,palatino;"+
"Gill Sans MT=gill_sans_mt;"+
"Gill Sans MT Bold=gill_sans_mt_bold;"+
"Gill Sans MT BoldItalic=gill_sans_mt_bold_italic;"+
"Gill Sans MT Italic=gill_sans_mt_italic;"+
"Helvetica=helvetica;"+
"Impact=impact,chicago;"+
"Iskola Pota=iskoola_pota;"+
"Iskola Pota Bold=iskoola_pota_bold;"+
"Symbol=symbol;"+
"Tahoma=tahoma,arial,helvetica,sans-serif;"+
"Terminal=terminal,monaco;"+
"Times New Roman=times new roman,times;"+
"Trebuchet MS=trebuchet ms,geneva;"+
"Verdana=verdana,geneva;"+
"Webdings=webdings;"+
"Wingdings=wingdings,zapf dingbats",
file_picker_callback: function (callback, value, meta)
{
$('#html-editor input').click();
//how to get selected image data and add to editor?
                $('#Iimage').change(function() {
                 var file = this.files[0];
                 var reader = new FileReader();
                 reader.onload = function(e) {
                 callback(e.target.result, {
                 alt: ''
                 });
                 };
                 reader.readAsDataURL(file);
                }).change();
                
        }

});
</script>
Автор: Mavrikii
Дата сообщения: 21.04.2016 23:57
vs6262

Цитата:
получилось

ну так напишите для остальных в чем дело
Автор: vs6262
Дата сообщения: 22.04.2016 00:53
в PHP у Message убрал decodeURIComponent()
Автор: nuker96
Дата сообщения: 26.04.2016 22:40
https://learn.javascript.ru/ajax-jsonp

Страницы: 1

Предыдущая тема: Насколько правильна такая проверка полей в форме?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.