微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用jQuery将JSON数据转换为Ruby on Rails?

我正在尝试发送一个如下所示的jQuery Ajax PUT请求:
$.ajax({
      type: "PUT",url: '/admin/pages/1.json',data: { page : {...} },dataType: 'json',success: function(msg) {
        alert( "Data Saved: " + msg );
      }
});

我的控制器大致如下:

respond_to do |format|
         if @page.update_attributes params[:page]
           format.html{ ... }
           format.json{ render :json => {:saved => 'ok'}.to_json }
         else
           format.html{ ... }
           format.json{ render :json => {:saved => 'fail'}.to_json }
         end
       end

但是我收到以下错误.

评估nil.name时发生错误
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:29:in merge_element!’
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:18:inparse”
(DELEGATION):2:在__send__’
(__DELEGATION __):2:inparse”
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/hash/conversions.rb:154:in`from_xml’

就像Ruby on Rails正在尝试将参数解析为XML,但是我想使用JSON!

将JSON放在Ruby on Rails上我该怎么办?

解决方法

设置contentType不适用于我.我得到一个字符串,而不是params [:page]的哈希.

所以我这样解决了:

使用JavaScript中的JSON脚本在JavaScript中对JSON对象进行字符串化:

$.ajax({
    type: "PUT",data: { page : JSON.strigify( {...} ) },success: function(msg) {
        alert( "Data Saved: " + msg );
    }
});

在Ruby on Rails方面,必须需要一个JSON gem.在控制器中:

params[:page] = JSON.parse params[:page] if params[:page].is_a? String

它不是很漂亮,但它对我有用.

原文地址:https://www.jb51.cc/jquery/180195.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐