jquery \ grails表单提交不在IE中工作

时间:2012-01-25 13:40:57

标签: jquery grails spring-webflow

我正在尝试在grails应用程序中使用submitToRemote按钮进行webflow。我正在使用jquery来处理ajax。我已经创建了一个自定义taglib,它将submitToRemote按钮改为在web流程中,并将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控制台中看不到任何错误。

更新

1。)我还添加了一个grails过滤器来防止缓存ajax响应。这是过滤器:

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

1 个答案:

答案 0 :(得分:1)

问题似乎是我在包含我正在尝试提交的表单元素的同一div上调用onclick="showSpinner('webFlowContainer');。如果我使用不同的div来显示ajax微调器,它可以正常工作。

谢谢!