Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX从RubyonRails服务器获取JSON内容_Javascript_Ruby On Rails_Ajax_Json - Fatal编程技术网

Javascript 使用AJAX从RubyonRails服务器获取JSON内容

Javascript 使用AJAX从RubyonRails服务器获取JSON内容,javascript,ruby-on-rails,ajax,json,Javascript,Ruby On Rails,Ajax,Json,我有一些RoR方面的经验,不过,我在AJAX方面是个新手。我的目标是在不同的机器上运行HTML5+JavaScript客户端和RubyonRails服务器(最终) 我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。我已经尝试了很多方法,比如添加一个“responseType”,等等,但是没有一个奏效 我当前的JavaScript文件如下所示: $(document).ready(function() { var xmlhttp = new XMLHtt

我有一些RoR方面的经验,不过,我在AJAX方面是个新手。我的目标是在不同的机器上运行HTML5+JavaScript客户端和RubyonRails服务器(最终)

我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。我已经尝试了很多方法,比如添加一个“responseType”,等等,但是没有一个奏效

我当前的JavaScript文件如下所示:

$(document).ready(function() {
      var xmlhttp = new XMLHttpRequest();
      xmlhttp.open("GET", "http://localhost:3000/contents", true);
      xmlhttp.send();

      alert(xmlhttp.responseText);
});
def index
    @contents = Content.all.order('created_at DESC')

    respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @contents }
    end
end
我的RoR应用程序有一个路径“/contents”,它调用contents\u controller.rb的索引函数,如下所示:

$(document).ready(function() {
      var xmlhttp = new XMLHttpRequest();
      xmlhttp.open("GET", "http://localhost:3000/contents", true);
      xmlhttp.send();

      alert(xmlhttp.responseText);
});
def index
    @contents = Content.all.order('created_at DESC')

    respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @contents }
    end
end
AJAX是实现这一点的正确方法吗?我有点迷路了


非常感谢

使用jQuery,您可以这样做

$.ajax({
  url: '/contents',
  type: 'GET',
  dataType: 'json',
  beforeSend: function (xhr) {
      xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
  },
  success: function(data){/* do something meaningful with data */},
  error: function(xhr, status, response) {/* your error callback */}
});

您的
格式.json将处理您的响应。

使用jQuery,您可以这样做

$.ajax({
  url: '/contents',
  type: 'GET',
  dataType: 'json',
  beforeSend: function (xhr) {
      xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
  },
  success: function(data){/* do something meaningful with data */},
  error: function(xhr, status, response) {/* your error callback */}
});

您的
format.json
将处理您的响应。

您可以简单地调用/contents.json(使用每个url添加.json以获得json模板的输出) 或 如果不需要html视图,请将默认格式设置为json。为此

您可以修改routes.rb文件以指定默认格式

routes.rb

resources :contents, defaults: {format: :json}

您可以简单地调用/contents.json(使用每个url添加.json以获得json模板的输出) 或 如果不需要html视图,请将默认格式设置为json。为此

您可以修改routes.rb文件以指定默认格式

routes.rb

resources :contents, defaults: {format: :json}

当您使用jQuery时,为什么要使用普通的js方法?看看我认为,ajax是否是正确的方法取决于您自己。为什么在使用jQuery时使用普通的js方法?看看我想,ajax是否是正确的实现方法取决于您自己。我不知道。json可以获得json模板。谢谢但我试图将“.json”添加到上面的JavaScript代码中,但仍然得到一个空的答案……您需要有json输出的模板。与index.html.erb为html呈现一样,index.json.jbuilder也将为json请求呈现。你可以在你的一个支架中看到json模板(或者生成一个支架并查看/my_scffold_name.json的工作原理)。Jbuilder是另一种DSL语言。我不知道。json可以获取json模板。谢谢但我试图将“.json”添加到上面的JavaScript代码中,但仍然得到一个空的答案……您需要有json输出的模板。与index.html.erb为html呈现一样,index.json.jbuilder也将为json请求呈现。您可以在您的一个框架中看到json模板(或者生成一个框架并查看/my_scffold_name.json works),Jbuilder是另一种DSL语言它工作了!只需将“url”更改为添加“.json”,一切正常。谢谢!成功了!只需将“url”更改为添加“.json”,一切正常。谢谢!