gpt4 book ai didi

jquery - Ruby on Rails ajax DELETE 请求未到达后端

转载 作者:行者123 更新时间:2023-12-05 03:26:54 26 4
gpt4 key购买 nike

我有一个 ajax 请求没有到达我的后端函数。该请求的状态为 200 并进入成功阶段,但它从未触发我的后端 Controller 方法。在我的回复中,我得到了这个:

涡轮链接.clearCache()Turbolinks.visit("http://localhost:3000/session/new", {"action":"replace"})

我的开发控制台中没有出现任何错误。关于如何解决这个问题有什么想法吗?

Rails 版本为 6,Turbolinks 版本为 5.0.1

这是我在routes.rb 文件中的路线

  resources :analyses_groups, :controller => "analyses/groups" do
delete "remove_mitigation_mapping", on: :collection;
post "add_mitigation_mapping", on: :collection;
end

我的 ajax 调用在我的 index.html.erb 文件中

    $(document).ready(function() {

$("button.delete_mapping_item").on('click', removeMapping);

});

var removeMapping = function (event) {
event.stopPropagation();

var button = $(this);
var mapping_type = button.data("mapping_type");
var mapping_index = button.data("mapping_index");
var mapping_name = button.parents("span").text();

if (confirm("Are you sure you want to remove " + mapping_name + "from " + mapping_type + "?")) {
$("#shade").show();

// Get mitigation_matrix_id
var row = $(this).parents("tr").parents("tr")[0]
var mitigation_matrix_id = $(row).find(".mitigation_matrix_id").text()

// Set up params for URL
var param_hash = {
"mitigation_matrix_id": mitigation_matrix_id,
"mapping_type": mapping_type,
"mapping_index": mapping_index,
}

$.ajax({
url: "/analyses_groups/remove_mitigation_mapping" + '?' + $.param(param_hash),
type: "DELETE",
success: function(data) {
console.log("success");
console.log(data);
button.closest("tr").remove();
$("#shade").hide();
},
error: function(data) {
$("#shade").hide();
}
});
}
}

最佳答案

我发现由于 Rail 的授权 token 和其他几个困惑的问题,我发现这种 ajax 很难正确处理,需要正确处理才能使其工作。

我通常发现仅添加带有隐藏提交按钮的隐藏表单会更快/更容易。稍微困惑一些,但要使其正常工作所需的事情要少得多,因此我通常在原型(prototype)设计期间以及第一次需要它正常工作时使用它。

基本上只需添加一个 display:none 表单,其中包含 mitigation_matrix_id、mapping_type 和 mapping_index 的隐藏字段。通过JS设置,然后用JS点击隐藏的提交按钮。对于 JS 响应,您可以只使用设置一个 action.js.erb 文件来处理它。该表单应该是一个 ajax 表单,所以使用 remote: true, local: false(这适用于各种各样的 Rails 应用程序,但严格来说,对于给定版本的 Rails,您只需要两者之一).

注意:还有一个专门的 Rails.ajax 方法也可以使用,但您还需要处理一些事情才能正常工作。

关于jquery - Ruby on Rails ajax DELETE 请求未到达后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71593950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com