【问题标题】:ajax only recognising json if I create it manually如果我手动创建它,ajax 只识别 json
【发布时间】:2013-03-05 20:24:50
【问题描述】:

我正在尝试使用以下代码来检查是否正在保存数据:

$parent.find('button[name=save]').click(function () {
  $.ajax({
    url: "/help.json",
    data: {"data": handsontable.getData()}, //returns all cells' data
    dataType: 'json',
    type: 'POST',
    success: function (res) {
      if (res.result === 'ok') {
        $console.text('Data saved');
      }
      else {
        $console.text('Save error');
      }
    },
    error: function () {
      $console.text('Save error, not working');
    }
  });
});

我正在为服务器端代码使用 rails。如果我手动创建 /help.json.erb 并将以下内容添加到页面中

{
  "result": "ok"
}

我在尝试使用 ajax 代码时收到“数据已保存”消息。

但是,如果我尝试使用 ruby​​ 创建 /help.json 文件,则会收到“保存错误,无法正常工作”错误。我在控制器中创建 /help.json 文件的 ruby​​ 代码如下:

class StaticPagesController < ApplicationController
 respond_to :html, :json

  def home
  end

  def help
      the_hash = {"result"=>"ok"}
      respond_with(the_hash) 
  end
end

以上代码生成一个/help.json文件

{"result": "ok"}

但我没有收到“数据已保存”消息

当我手动创建 json 文件时它可以正常工作但如果我尝试使用 ruby​​ 则不行的原因是什么?

我的路线文件的相关部分是:

  root to: 'static_pages#home'
  match '/help',    to: 'static_pages#help'

进一步检查,我收到的错误消息为 500(内部服务器错误)

【问题讨论】:

  • 您能否发布 routes.rb(至少是与该控制器相关的相关行)和更多控制器代码?
  • 你能不能试试curl -v到你的终点,看看返回的标头是否有任何不同?
  • @fmendez 我从控制器和路由文件中添加了更多代码
  • @NeilSlater 很抱歉,我不确定如何对我的端点执行 curl -v
  • 看来您解决了自己的问题。作为记录,在您的服务运行时从命令行:curl -v http://&lt;server&gt;:&lt;port&gt;/help.json 应该显示所有标题以及响应正文 - 一个方便的 Ruby 服务器端快速测试,因此您可以确定它是 Ruby 还是 JavaScript你需要看看。

标签: ruby ajax json handsontable


【解决方案1】:

我通过使用这里的答案解决了这个问题:

Rails respond_with acting different in index and create method

我将 respond_with 语句更改为:

   respond_with({:result => "ok"}, :location => nil)

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多