gpt4 book ai didi

ajax - 在 jQuery 和 Controller Rails 之间传递值

转载 作者:行者123 更新时间:2023-12-01 06:35:36 25 4
gpt4 key购买 nike

相当多的链接,但我无法将所有信息拼凑在一起。

我假设涉及一个 Controller 、一个 View 和路由。

关于 url 和路由,我有通用文件夹结构 app/views/pages/home 和 app/controllers/pages_controller.rb。如果我的路由和网址也正确的话,你能指导我吗?

路线.rb

get pages/get_aj //Don't know if this is what you put

jQuery

$.ajax({ 
type: 'get'
url: '/pages/get_aj' //can someone confirm this is how you do it?
dataType: "JSON" //I need to pass back values from the controller to JS. Do I use JSON?
}).success(function(data){
alert("returned " + data);
});

//some other jQuery code that will depend on the data returned.

pages_controller.rb

def get_aj
respond_to do |format|
format.json{render :json => "we got here" } //Do I return .js?
end
end

耙子路线

   pages_home GET /pages/home(.:format)    pages#home
pages_contact GET /pages/contact(.:format) pages#contact
pages_get_aj GET /pages/get_aj(.:format) pages#get_aj

最佳答案

您的代码应该能够实际工作。您误解的最大的事情是 JS 警报的作用。它警告字符串,data 是一个对象。请参阅这个 JS fiddle :http://jsfiddle.net/YNeA3/

要从 JS 检查对象,请使用 console.log() 而不是alert。这些将显示在您的浏览器控制台中。这是 JS 的基本面包和黄油调试工具。

我不确定您发送的 JSON 对象是什么样的,因为您应该呈现哈希值,而不是字符串。我认为这是您的代码唯一真正的问题。

另外,一个建议:如果此 Controller 操作仅适用于 ajax,则不必担心 respond_to block 。不过我会指定状态。

def get_aj
data = {:message => "Alert this!"}
render :json => data, :status => :ok
end

现在在你的 JS 中:

$.ajax({ 
type: 'GET',
url: '/pages/get_aj',
success: function(data,status,xhr){
console.log(data);
alert(data.message);
},
error: function(xhr,status,error){
console.log(xhr);
alert(error);
}
});

数据将是一个 JS 对象,看起来就像您发送的哈希值。

关于ajax - 在 jQuery 和 Controller Rails 之间传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195172/

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