Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Jquery和ajax从控制器方法检索json对象?_Jquery_Ajax_Json - Fatal编程技术网

如何使用Jquery和ajax从控制器方法检索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

我目前正在尝试调用一个控制器方法,该方法以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(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);
});