首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JSON中使用rails remote: true参数?

如何在JSON中使用rails remote: true参数?
EN

Stack Overflow用户
提问于 2012-06-14 03:28:21
回答 2查看 8.8K关注 0票数 13

如何指定在使用rails remote: true参数提交ajax请求时返回JSON对象?返回JSON对象后,如何捕获和使用它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-14 05:45:14

有很多方法来回答这个问题,这取决于你的具体情况(例如:你正在使用jquery和UJS适配器),但我将发布一个文档中的东西,我用自己来更好地理解整个过程:我在很大程度上使用这个伟大的post:我会更新我的答案,因为我目前也在研究这个东西。

可以将data-type属性添加到DOM元素,如下所示:

代码语言:javascript
运行
复制
<%= link_to "Add a new task", new_project_task_path(@project), "data-type" => "json", :id => "add_task_btn" %>

您还可以在jQuery的全局$.ajaxSetup()函数中定义默认的dataType。更改所有Ajax请求:

代码语言:javascript
运行
复制
$.ajaxSetup({
      dataType: 'json'
});

第三种方法是在beforeSend回调中:

代码语言:javascript
运行
复制
$(“#add_some_button”).live(“ajax:beforeSend”, function(e, xhr, settings){
        new_data_type = “application/json, text/javascript, */*; q=0.01”;
        xhr.setRequestHeader('accept', new_data_type);
})

( q=0.01是0到1之间的优先选项)

因此,您可以根据自己需要更改dataType属性和HTTP标头。下面是一个可能的MIME类型列表供参考:Here

和特定的javascript媒体类型列表:Here

从服务器发回的数据格式概述: 1.)Ajax发送带有设置为所需MIME类型的Accept标头的请求。2.)Rails控制器检查Accept标头以确定它应该返回什么。3.)控制器将确定该操作是否处理特定的MIME类型。在Rails3中,我们可以使用respond_with,在3.0之前,它是控制器操作中的一个respond_to块。

在Rails 3.1中使用Ajax的方式概述:

我认为现在的首选方法是使用默认的AJAX as脚本,然后使用js.erb或js.coffee文件处理dataType请求。

选项: 1.)单击事件:插入DOM元素2。)通过Ajax 3提交表单。)通过Ajax 4删除。)使用Ajax进行客户端验证(在输入字段上使用data-remote )5.添加动态选择(在选择字段上使用数据远程) 6.)Ajax分页-直接返回HTML。

同样,我在这里包含的是我自己的大纲/评论,要了解详细信息,请查看Andrea Singh的伟大帖子here

票数 14
EN

Stack Overflow用户

发布于 2012-06-17 01:21:08

请尝试以下操作:

app/controllers/examples.rb

代码语言:javascript
运行
复制
class ExamplesController < ApplicationController
    def new
        @my_json = { :message => "Hello json"}
    end
end

app/views/examples/new.html.haml

代码语言:javascript
运行
复制
= link_to "New", new_examples_path :remote => true

app/views/examples/new.js.erb

代码语言:javascript
运行
复制
console.log("<%= @my_json %>");
console.log("<%= @my_json['message'] %>");
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11021991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档