我想通過ajax調用解析來自我的控制器的json字符串。被解析的json字符串位於js.erb文件中。我將代碼設置爲類似於堆棧溢出的建議:Parsing a JSON string in Ruby。我添加了寶石,但不是簡單地添加代碼,我不得不將<%%>放在代碼的ruby部分,因爲它是一個js.erb文件而不是.rb文件在ruby中解析json字符串
我的完整js.erb文件看起來像這樣:
<% require 'json' %>
$(document).ready(function()
{
$('#collaboration_user_name').on('keyup', function() {
text = $(this).val();
// alert(text);
$.ajax({ url: "/collaborations?collaboration="+text,
beforeSend: function(xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}).done(function(data) {
console.log("data:", data);
users = JSON.parse(data);
$("#user_data ul li").remove();
$.each(users, function(index, value) {
$("#user_data ul").append("<li role='presentation'>"+"<a role='menuitem' tabindex='-1' href='#'>"+users[index].name+ ", " +users[index].email+"</a>"+"</li>");
});
<% @user = "data" %>;
$("#user_data").append(<%= JSON.parse @user %>);
});
});
});
需要注意的代碼是
<% require 'json' %>
在頂部和
<% @user = "data" %>;
$("#user_data").append(<%= JSON.parse @user %>);
位於頁面的底部。當我添加這些行時,出現錯誤。
JSON::ParserError in Wikis#edit
Showing /Users/warren/code/knowledgebank/app/views/layouts/application.html.erb where line #7 raised:
757: unexpected token at 'data'
(in /Users/warren/code/knowledgebank/app/assets/javascripts/collaborations.js.erb)
Extracted source (around line #7):
4<title>Knowledgebank</title>
5<%= stylesheet_link_tag "application", media: "all" %>
6
7<%= javascript_include_tag 'application'%>
8<%= csrf_meta_tags %>
9</head>
10<body>
如何讓JSON.parse for ruby工作?在JavaScript中它工作正常。
' 「數據」'無效'JSON'。 – 2014-09-23 04:04:24