JQuery \ Grails Форма отправки не работает в IE - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь использовать кнопку submitToRemote для веб-потока в моем приложении Grails. Я использую JQuery для обработки AJAX. Я создал пользовательский taglib, который изменяет кнопку submitToRemote в веб-потоке и прикрепляет eventId как таковой ...

def remoteWebFlowSubmit = {attrs, body ->

        def elementName = attrs['name'].replaceAll(/ /, "_")
        def button = submitToRemote(attrs, body) //<-- standard grails submitToRemote button

        button = button.replaceFirst(/data\:jQuery/, "data:\'_eventId_${elementName}=1&\'+jQuery")

        out << button
    }

Это работает в Fire Fox и Chrome , но не передает никаких данных формы в IE 9,8 или 7. Сгенерированная кнопка выглядит так в IE:

<input name="next" onclick="showSpinner('webFlowContainer');;jQuery.ajax({type:'POST',data:'_eventId_next=1&'+jQuery(this).parents('form:first').serialize(), url:'/MySite/MyController/run?execution=e3s1',success:function(data,textStatus){jQuery('#webFlowContainer').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){jQuery('#webFlowContainer').html(XMLHttpRequest.responseText);}});return false" type="button" value="Next"/>

Что я делаю не так? Я не вижу ошибок в консоли JS.

UPDATE:

1.) Я также добавил фильтр grails, чтобы предотвратить кэширование ответа ajax. Вот фильтр:

class AjaxFilters {
    def filters = {
        all(controller:'*', action:'*') {
            before = {
                if (request.getHeader('X-Requested-With')?.equals('XMLHttpRequest')) {
                    response.setHeader('Expires', '-1')
                }
            }
        }
    }
}

1 Ответ

1 голос
/ 26 января 2012

Кажется, проблема в том, что я вызываю onclick="showSpinner('webFlowContainer'); в том же div, который содержит элементы формы, которые я пытаюсь отправить. Если я использую другой div для отображения счетчика ajax, он работает нормально.

Спасибо!

...