【问题标题】:Setting the global ajax datatype breaks rails remote links设置全局 ajax 数据类型会破坏远程链接
【发布时间】:2016-12-25 21:36:32
【问题描述】:

我创建了一个远程提交表单的 Rails 应用程序,如果验证未通过,则显示表单验证错误。

我的表单完美无缺。然而,我发现我设置它的方式会破坏任何远程链接。原因是我将全局 AJAX 数据类型设置为“json”。如果我删除此设置,我的远程链接可以工作,但不会触发我的表单“成功”和“失败”事件。

这是我的代码...

application.js

$.ajaxSetup({
  dataType: 'json'
})

foo.coffee

$('#foo_form').on('ajax:success', (e, data, status, xhr) ->
  console.log 'Great success'
).on 'ajax:error', (e, data, status, xhr) ->
  console.log('Great Failure')

index.haml

= link_to "New Foo",new_foo_path, data: { remote: true}

总结一下:使用上面的代码,我可以远程提交表单,之后成功或错误消息都会记录到我的控制台。但是,远程链接不适用于上面定义的 '$.ajaxSetup({dataType: 'json'})' 设置。如果我删除这段代码,链接可以工作,但不会触发表单事件。

有什么想法吗?

【问题讨论】:

    标签: javascript jquery ruby-on-rails json coffeescript


    【解决方案1】:

    你试过了吗:

    = link_to "New Foo", new_foo_path(format: :json), data: {remote: true}

    请准确描述远程链接无法正常工作的原因? 500, 404, not preventDefault by javascript?

    【讨论】:

      【解决方案2】:

      您需要提交表单,而不是指向操作的链接。如果您希望提交表单数据,请使用form_forform_tag.submitsubmit_tag 查看助手。

      = form_tag (new_foo_path, remote: true) do
        = submit_tag("New Foo")
      

      link_to 将创建一个不知道您的表单数据的锚标记。如果您想将表单按钮样式化为链接:

      = submit_tag("submit", style: 'display: none;', id: 'submit_foo')
      = link_to( "New Foo", "#", :onClick => "$('#submit_foo').click(); return false;" )
      

      submit ajax form with link (StackOverflow)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 2020-02-15
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多