我的问题是下一个:
当我尝试用RUBY ON RAILS 3上的'json'
gem解析json params时抛出此错误:
Unexpected token at
示例
我在ruby中有这个对象:
然后我有这个HTML代码:
<script>
$("#selected").live('click', function(){
jQuery.ajax({url: '<%= deselect_all_checkboxes_path %>', data: {contacts: '<%= contacts.to_json %>'}});
});
</script>
<input type="checkbox" id="selected" value="1" >
我在Rails控制台中尝试此代码
JSON.parse(json_string.gsub(/"/, "\""))
工作正常。但是当我尝试这段代码时:
JSON.parse(params[:contacts].gsub(/"/, "\""))
gsub方法存在问题。在Rails控制台工作正常,但在我调试时抛出错误消息。问题是“;”字符。
哪个可能是错误?
答案 0 :(得分:2)
您不希望在jQuery中引用contacts.to_json
值,当您希望它成为JavaScript对象文字时,将其转换为字符串;一旦你的数据是一个字符串,它将最终由ERB编码的HTML,你得到你看到的混乱。在你的jQuery中尝试这个:
data: {contacts: <%= contacts.to_json.html_safe %>}
这应该会在jQuery中为您提供一个很好的JavaScript对象文字,当它被发送回您的服务器时将被序列化为JSON对象(而不是JSON字符串)。
答案 1 :(得分:2)
首先取消HTML,然后将其解析为直接JSON:
JSON.parse(CGI.unescapeHTML(params[:contacts]))