【问题标题】:jquery\grails form submit not working in IEjquery\grails 表单提交在 IE 中不起作用
【发布时间】:2012-02-18 16:37:23
【问题描述】:

我正在尝试在我的 grails 应用程序中为 webflow 使用 submitToRemote 按钮。我正在使用 jquery 来处理 ajax。我创建了一个自定义标记库,它将 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')
                }
            }
        }
    }
}

【问题讨论】:

  • 你有 JS 错误吗?如果您将日志记录放在 ajax 调用的 error 块中,而不是将其留空怎么办?
  • 我更新了我的问题并添加了错误块。没有 js 错误。

标签: jquery grails spring-webflow


【解决方案1】:

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

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多