【发布时间】:2014-04-17 10:13:51
【问题描述】:
我正在尝试从 get 请求中获取 JSON 响应。但是,我收到以下错误:Uncaught SyntaxError: Unexpected token u。我知道 rails 路由有效,因为我确实在控制台中成功加载了响应。
Ajax 响应应该在复选框更改并被选中时启动。
为什么我从$.parseJSON 收到此错误?
Rails 控制器
def providers
@providers = User.order("last_name ASC, first_name ASC, middle_name ASC").where("provider_flag = ? and inactive_flag = ? and del_flag = ?", true, false, false).select("id, CONCAT(IFNULL(last_name,''), ', ', IFNULL(first_name,''), IFNULL(middle_name,'')) AS full_name");
respond_to do |format|
format.json { render :json => { :providers => @providers.to_json}, :status => :ok }
# format.json { render :json => @providers.to_json }
end
end
Javascript
$('#provider_chk').change(function() {
if($(this).is(":checked")) {
$.ajax({
url: '<%= providers_schedule_index_path %>',
type: 'GET',
dataType: 'json',
data: {
authenticity_token: $('meta[name=csrf-token]').attr('content')
},
success: function(data) {
console.log('loaded successfully.');
var providers = $.parseJSON(data.responseText)['providers'];
providers_count = $(providers).size();
console.log(providers);
console.log(providers_count);
},
error: function(data) {
console.log("An error has occurred!")
}
});
} else {
$('#providers_results').empty();
}
});
JSON 响应
providers: "[{"id":2,"full_name":"Test, User"}]"
【问题讨论】:
-
你的 Json 是什么?你用JSON lint 测试了Json。我看到了您的代码,但是您得到了什么实际响应,您可以发布吗?你可以用 console.log(data);
-
是的,JSON 是有效的。在 JSON lint 测试
-
你能把它贴出来吗,我看到了供应商的定义
-
谢谢,现在在上下文中查看它:谢谢
-
您正在对 JSON 进行双重编码,这不是必需的。这不应该是问题,但您仍应删除
to_json。
标签: javascript jquery ruby-on-rails ajax json