Javascript 在rails中创建JSON对象,然后使用jQuery/Ajax从操作中获取JSON的正确方法是什么?
我正在尝试编写一个应用程序,它将使用AJAX请求从rails操作中获取一些JSON。它似乎工作得很好,但在调试时,我发现当我输出所需的JSON值时,它表示该值未定义 以下是我目前拥有的: 轨道:Javascript 在rails中创建JSON对象,然后使用jQuery/Ajax从操作中获取JSON的正确方法是什么?,javascript,jquery,ruby-on-rails,ajax,json,Javascript,Jquery,Ruby On Rails,Ajax,Json,我正在尝试编写一个应用程序,它将使用AJAX请求从rails操作中获取一些JSON。它似乎工作得很好,但在调试时,我发现当我输出所需的JSON值时,它表示该值未定义 以下是我目前拥有的: 轨道: def complete @case = Case.find(params[:case_id]) respond_to do |format| format.html format.json { render json: { :percentage => @case
def complete
@case = Case.find(params[:case_id])
respond_to do |format|
format.html
format.json { render json: { :percentage => @case.complete } } ## Should produce something like {"percentage" => 0} and when I go to this url in my rails app I see that it does.
end
Javascript:
function updatePercentage(id_att, db_id, type) {
console.clear();
console.log("updatePercentage was called.");
$(".loading").progressbar({ value: false });
$.ajax({
type: "GET",
dataType: "json",
url: "/cases/" + db_id + "/" + type + "_complete.json", // e.g. /cases/42/type_complete.json
success: function(result) {
console.log("\n\nPercentage from AJAX is " + JSON.stringify(result.percentage));
}
});
}
当我转到localhost:3000/cases/XXXX/type_complete.json
时,我看到{“percentage”:100}
,显然这已经有了进展。但在js控制台中,我只看到“来自AJAX的百分比未定义”
当我说console.log(“我得到的JSON对象是”+JSON.stringify(this))代码>
输出为:
JSON:(在控制台中)
为什么会这样?我该如何修复它?据我所知,JSON数据应该在那里。但是Javascript表现得好像不是这样 你太接近了!您只需更改成功回调,如下所示:
success: function( data ) {
console.log("\n\nPercentage from AJAX is " + data.percentage);
}
成功回调以参数形式传递json数据=)
您还可以使用jQuery getJSON速记方法:为什么在success
回调中使用this
?您应该为该回调提供一个参数,并使用该参数而不是this
。正如您已经了解到的,这个
指的是$返回的承诺。ajax
我以前将它命名为“result”,但当我开始将其他与此处无关的值交给函数时,我将其改为“this”关键字,因此我没有列出它。但是如果您能更清楚地阅读。。。坚持
success: function( data ) {
console.log("\n\nPercentage from AJAX is " + data.percentage);
}