Skip to content

Commit

Permalink
Fixed IE8 async form post
Browse files Browse the repository at this point in the history
  • Loading branch information
vitalyiegorov committed Feb 28, 2014
1 parent d3573a3 commit bf39790
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
30 changes: 18 additions & 12 deletions ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,11 @@ SamsonJS.extend({
if (!type) type = 'POST';

// Установим параметры запроса
sjsXHR.open( type, url, true, "", "" );

// Add special async header
sjsXHR.setRequestHeader('SJSAsync', 'true');

sjsXHR.open( type, url, true, "", "" );

// Если нам передали НЕ форму
if( (window.FormData === undefined) || !( data instanceof FormData) )
{
{
// Установим правильные заголовки
sjsXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Expand All @@ -78,6 +75,9 @@ SamsonJS.extend({
//data = encodeURIComponent(data);
}

// Add special async header
sjsXHR.setRequestHeader('SJSAsync', 'true');

// Обработчик перед отправкой запроса
if( beforeHandler ) beforeHandler( url, data );

Expand Down Expand Up @@ -272,8 +272,8 @@ SamsonJS.extend({

// Разместим фрейм где-то в "молоке"
frame.css('position', 'absolute');
frame.css('top', '-9999px');
frame.css('left', '-9999px');
frame.css('top', '-9999px');
frame.css('left', '-9999px');
//frame.css('width','100%');
//frame.css('height','200px');

Expand Down Expand Up @@ -308,7 +308,10 @@ SamsonJS.extend({

// Подменим в отправляемой форме клона на оригинал
newForm.append( input );
});
});

// Append special hidden element to tell SamsonPHP that this is async event
newForm.append('<input type="hidden" name="SJSASYNC" value="true">');

// Добавим форму во фрейм
if( s.IEVersionLowerThan(9) ) frame.append( newForm );
Expand All @@ -320,16 +323,19 @@ SamsonJS.extend({
EventHandler : function( event, target )
{
//s.trace(frame.DOMElement.document.location.href);


var response = frame.html().replace(/\"\\\"/,'\"');

// Вызовем обработчик получения ответа от сервера
if( handler ) handler( frame.html() );
if( handler ) handler( response );

//s(document.body).append( '<textarea>'+frame.html()+'</textarea>');
//s(document.body).append( '<textarea cols="50" rows="50">'+response+'</textarea>');

// Удалим фрейм
frame.remove();
}
});


// Отправим нашу виртуальную форму на сервер
newForm.DOMElement.submit();
Expand Down
2 changes: 1 addition & 1 deletion events.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ SamsonJS.extend({
};

// Создадим коллекцию для хранения обработчиков событий для данного элемента
de.EventListeners = de.EventListeners === undefined ? { 'vilka':1 } : de.EventListeners;
de.EventListeners = de.EventListeners === undefined ? {} : de.EventListeners;
// Безопасно создадим коллекцию для обработчиков указанного события
de.EventListeners[ EventName ] = !de.EventListeners[ EventName ] ? [] : de.EventListeners[ EventName ];
// Добавим созданный обработчик события в коллекцию обработчиков
Expand Down

0 comments on commit bf39790

Please sign in to comment.