gpt4 book ai didi

javascript - Rails 渲染显示在屏幕上的 json

转载 作者:行者123 更新时间:2023-11-29 18:58:08 25 4
gpt4 key购买 nike

我有一个使用 Webpacker、jQuery 3 的 Rails 5.1 应用程序。我试图在发布 Ajax 帖子后将 json 呈现回浏览器。这是我的 Controller :

def create
@giver = Giver.new(giver_params)
return unless @giver.valid?
if @giver.save
render json: { location: 'url' }, status: :ok
end
end

这是我的 javascript(我有一个路由将/give 指向 Controller 的创建方法):

  $form.get(0).submit();

var jqxhr = $.ajax({
url: '/give',
type: 'POST',
dataType: 'json',
data: $form.serialize()
})
.done(function() {
console.log(jqxhr['responseText']);
$('#new-gift').hide(function() {
$('#confirm-gift').show();
});
return false;
})
.fail(function() {
})
.always(function() {
});
}

我已经这样做了很多次,没有遇到任何麻烦,但由于某种原因,它现在正在渲染

{"location":"url"}

在屏幕上,不执行 .done 调用中的任何功能(隐藏/显示 div)。它也可以将所有内容保存到数据库中。我认为 .done 部分中的 return false; 可以解决问题,但事实并非如此。有任何想法吗?我看不到任何其他解决此问题的问题 - 如果它们在那里,请告诉我答案。谢谢。

.container.active-div#new-gift
= form_for @giver, url: give_path, remote: true, html: { id: "payment-form" } do |f|
%h3 Your Information
.panel-body
.row
.col-md-6
= f.text_field :first_name, class: "form-control", placeholder: "First Name"
%br/
.col-md-6
= f.text_field :last_name, class: "form-control", placeholder: "Last Name"
%br/
.row
.col-md-12.text-center
%br/
= button_tag "Donate", class: "btn btn-primary btn-lg submit", style: "width: 150px; margin-bottom: 50px;"

最佳答案


由于您正在触发手动 ajax 表单提交,因此表单中不需要 remote: true。只需从表单中删除 remote: true 并在触发表单提交事件后阻止它。然后,代码看起来像

 $("#payment-form").submit(function(event){
var jqxhr = $.ajax({
url: '/give',
type: 'POST',
dataType: 'json',
data: $form.serialize()
})
.done(function() {
console.log(jqxhr['responseText']);
$('#new-gift').hide(function() {
$('#confirm-gift').show();
});
});
.fail(function() {
})
.always(function() {
});
event.preventDefault();
});


希望这会有所帮助。

关于javascript - Rails 渲染显示在屏幕上的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170276/

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