【问题标题】:Ajax call not working as expected in rails appAjax 调用在 Rails 应用程序中未按预期工作
【发布时间】:2014-04-09 12:06:17
【问题描述】:

在我的 Rails 应用程序中,我有这段代码

<a data-remote="true" href="#" class: "find_product">Find product</a>

对于 ajax 调用,我正在这样做

$(document).on('click', '.find_product', function(){     
              $.ajax({
                     url: "<%= startup_wizard_find_horse_path() %>",
                    dataType: 'script',
                    type: 'GET',
                    data: { box_no: "3"}
            });
            return false;


        });

现在当我点击上面的链接时,ajax调用是发送到当前页面的action而不是

startup_wizard_find_horse_path

为什么会发生这种情况,我怎样才能做到这一点?

【问题讨论】:

  • 我可能不知道 Rails,所以冒着被鞭打的风险:WTF 是 class: "find_product"?
  • 还有一件事,如果你想避免长时间拉扯头发,请学会使用 Network Tab

标签: jquery ruby-on-rails ajax


【解决方案1】:

如果你打算使用数据远程,设置 href 值并且不定义点击事件,这就是 Rails 中不显眼的 JS 的要点。

如果您想手动使用 jQuery,请删除 remote = true 并将您的 jQuery 单击更改为此,以禁用链接的默认行为:

$(document).on('click', '.find_product', function(event) {
  event.preventDefault();
  $.ajax({
    url: "<%= startup_wizard_find_horse_path() %>",
    dataType: 'script',
    type: 'GET',
    data: { box_no: "3"}
  });
  return false;
});

编辑:这是一篇回顾如何使用远程链接的帖子:link_to and remote => true + jquery : How? Help?

【讨论】:

  • 当我删除这部分数据时:{ box_no: "3"} 从 ajax 调用这项工作就好了
  • 您仍在混合使用两种不同的方法,如果您不定义 URL 并编写自定义 jQuery,那么您的远程链接将毫无意义。
  • 您的 JS 控制台出现什么错误?在你的 Rails 日志中? URL 是否在您的 JS 输出中正确呈现?你的startup_wizard_find_horse 方法是什么样的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多