如何使用Jquery和ajax从控制器方法检索json对象?
我目前正在尝试调用一个控制器方法,该方法以json对象的形式返回数据,如下所示:如何使用Jquery和ajax从控制器方法检索json对象?,jquery,ajax,json,Jquery,Ajax,Json,我目前正在尝试调用一个控制器方法,该方法以json对象的形式返回数据,如下所示: var url = "/campaigns/new_pair.json?id="+campaign_id+'&loser_id='+loser_id+'&winner_id='+winner_id; $.getJSON(url, function(){ alert("success") }) .done(function(dat
var url = "/campaigns/new_pair.json?id="+campaign_id+'&loser_id='+loser_id+'&winner_id='+winner_id;
$.getJSON(url, function(){
alert("success")
})
.done(function(data) {
$pair.data('data', data);
});
然后,当我试图访问该数据时,我得到一个错误“无法读取未定义的'left_defect'属性”
运行此代码时,会触发成功警报,如果我导航到我的url,它也会返回:
{"left_outfit":{"outfit_id":1713,"c_outfit_id":1886,"liked":false,"image":"xxx","total_votes":26,"stylist":{"id":41,"image":"xxx","first_name":"xxx"}},"right_outfit":{"outfit_id":1187,"c_outfit_id":1191,"liked":false,"image":"xxx","total_votes":30,"stylist":{"id":53,"image":"xxx","first_name":"xxx"}}}
这可能是畸形的吗
提前感谢您的任何意见
编辑:
$pair的定义方式如下:
Pairs.prototype = {
// init
_init: function () {
var $pairs = $('body.open-lookbook-list > section > article'),
self = this;
$pairs.each(function (index, pair) {
var $pair = $(pair);
self._listeners($pair);
});
}
顺便说一句,这是使用下划线.js,后端也是用Rails完成的 这里仍然有点胡乱猜测,但以下是我应该尝试的:
var $children = $pair.children(".vote-left");
$children.attr("data-votes", data.left_outfit.total_votes);
由于您收到的JSON名称为data,$pair.data('data')。因此,我觉得这对我来说没有多大意义。取而代之的是data.left_.total_投票
更新:
通过将done函数与getJson中的success函数相结合,您应该能够检索到所需的数据:
$.getJSON(url, function(data) {
$pair.data('data', data);
});
您对
$pair.children
的调用相对于.done
在哪里?您可以发布什么是$pair
。更多信息。对$pair.children的调用在.done后面的下一行完成block@xxyyxx它不应“遵循.done块”。它应该在.done
回调中,因为这是一个AJAX调用,所以稍后将完成(在执行块后面的行之后)…我已经更新了我的帖子w。更多信息,我希望这能有所帮助。是的,我正在尝试将值存储在$pair.data('data')中。left_detage.total_在$pair的另一个数据属性中投票。作为注释比作为答案更好。您好!谢谢你的建议。事实证明,我保存数据对象的var无法在done块之外访问,因此导致了问题。最后,我将json对象中需要的每一点信息都保存到在$.getJSON之前初始化的一些变量中,这样我就可以做我想做的事情了。
$.getJSON(url, function(data) {
$pair.data('data', data);
});