我在rails上使用ruby进行了ajax调用。我取得了成功,但我不知道如何使用ajax调用的数据结果。
$.ajax({
url: "/search/get_listing?listing_id" + id,
dataType: 'JSON',
success: function(data) {
var listing = JSON.parse(data);
$("#modalPrice").html(data.city);
}
});
控制器:
@listings_data = Listings.find_by(id: params[:id])
render :json => @listings_data.to_json
使用data.city不起作用。我希望通过简单地放置从模型中获取值。在变量上
var listing = JSON.parse(data);
仍然没有运气。帮帮我们谢谢!
答案 0 :(得分:1)
JSON.parse
是Ruby代码,JSON gem的API。你们怎么能在Javascript中使用它:)
jQuery可以直接处理JSON对象data
。只需使用:
success: function(data) {
$("#modalPrice").html(data.city);
}
答案 1 :(得分:1)
例如,您可以在控制器中进行渲染:
render :json => { :city => @listings_data }
关于JS:
success: function(data) {
var listing = data.city;
}
答案 2 :(得分:0)
每次我在rails中使用AJAX时都遇到类似的问题,因为响应似乎有所不同,具体取决于您返回值的方式或处理JS成功的方式。试试这个:
success: function(data, status, xhr) {
var listing = JSON.parse(xhr.responseText);
$("#modalPrice").html(data.city);
}
我通常使用Firebug(Firefox插件)在我的成功处理程序中设置断点,以检查响应所在的参数。有时它位于第一个值中,有时在其他值中,然后它可能是{{1} }甚至是xhr.response
。每次都让我很困惑。
要使用Firebug,请在页面上按F12,选择“脚本”窗格并找到要检查的代码。单击要使用断点的代码的行号旁边的。在这种情况下,您可以选择xhr.responseText
行。当代码执行时(点击后),浏览器将停在那里,您可以检查右侧传递的参数。