Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает отправка формы jquery + IE9, Отправка формы ajax через jquery 
V
    Опции темы
system
Дата 12.5.2012, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: нет
Всего: 2



Здравствуйте, помогите пожалуйста разобраться.  

У меня есть форма : 
Код

<form method="post" action="/balda/server.wsgi" id="gameboard" name="gameboard" >


у нее кнопка submit :
Код

 <input type="submit" name="submit" value="Поиск" style="width:141px;height:50px; float:left; margin-left:4px; font-size:36px;" onmouseover="CheckElements();">

на кнопку submit забиндена обработка ajax отправки:
Код

 jQuery(document).ready(function(){
    jQuery('#gameboard').submit( function() {
        $.ajax({
            url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            dataType: 'json',
            data    : $(this).serialize(),
            success : function( data ) {
                       onAjaxSuccess( data );
                    }
        });
        return false;
    });
});


Есть accepted функция : 
Код

 function onAjaxSuccess( result )


Все это замечательно работает в chrome, ff, opera, safari, но не работает в Internet Explorer 9 (другие не пробовал )

В IE9 переменная result пустая.
Пробовал еще биндить кнопку так:
Код

$('document').ready(function( result )
{
    $('#gameboard').ajaxForm( {    
        type: "POST",
        data    : $(this).serialize(),
        success: onAjaxSuccess,
        dataType: 'json',
        error: function(){ alert ( 'Error loading data format.' ); }
    }); 
});

Но результата такой же кроме IE9 везде работает. 

Подскажите пожалуйста в чем может быть проблема. 
Заранее благодарю за помощь.

Это сообщение отредактировал(а) system - 13.5.2012, 22:54
PM MAIL   Вверх
Aliance
Дата 12.5.2012, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Код

<input type="submit" onmouseover="CheckElements();">

Так никто не делает  smile 

Лучше так:
Код

jQuery(function(){
    jQuery('#gameboard').submit( function(evt) {
        evt.preventDefault(); // прерываем сабмит формы

        CheckElements();
        // тут нужно как-то прерывать выполнения в случае ошибки
        // например функция выше должна возвращать boolean, 
        // а далее проверять и либо прекращать, либо продолжать сабмит

        var $this = $(this);

        $.ajax({
            url     : $this.attr('action'),
            type    : $this.attr('method'),
            dataType: 'json',
            data    : $this.serialize(),
            success: onAjaxSuccess
        });
    });
});


Не могу написать точный код, т.к. код функции CheckElements не предоставлен, но смысл указал в комментариях.

Кстати, несколько замечаний:
  • обычно нет смысла передавать name у submit кнопки;
  • в объекте настроек аякс-метода, ключ success принимает callback - либо лямбда-функцию, либо название функции. Нет смысла писать как было у вас, можно проще - как у меня.
  • советую не использовать несколько раз jquery-поиск к одному и тому же элементу. Если такая необходимость есть - проще сохранить результат в переменную, как я это сделал с переменной $this

PM MAIL WWW ICQ Skype   Вверх
system
Дата 12.5.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: нет
Всего: 2



Большое спасибо за комментарии, только вы не объясните почему не работает в IE9?
Пробовал вызывать по разному, изначально было как вы сказали. 
Но все равно в onAjaxSuccess приходит пустое значение.  


Это сообщение отредактировал(а) system - 14.5.2012, 00:01
PM MAIL   Вверх
system
Дата 13.5.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: нет
Всего: 2



В общем для истории отмечусь, проблема решилась заменой кодировки в json ответе с cp1251 на utf-8
Глупый ие упорно не видит хедер в котором ясно написано (std::cout << "Content-Type: text/html; charset=cp1251" << std::endl << std::endl; ) 
что ответ приходит в кодировке cp1251. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.