AJAX响应返回有效的JSON,控制台日志未定义

时间:2016-07-08 19:25:14

标签: javascript php jquery json ajax

所以我的AJAX请求有一个特殊的问题。当我发出请求时,我可以单击网络选项卡并查看响应,这是有效的JSON。但是当我尝试在我的ajax调用的成功函数中使用该数据时,它返回undefined。我将发布一些我的控制台和网络选项卡以及一些代码的图片。

Console

network

最后我的代码:

getWebinars: function (from, to, credential) {
    $.ajax({
        url: 'endpoint',
        data: {
                     from: from,
                     to: to,
                     credential: credential
        },
        success: function (reply, status, xhr) {

            console.log(reply);
            var html = '<select class="webinars" multiple>';
            for(var webinar_id in reply.list) {
                html+=  '<option value="' + webinar_id + '">' + reply.list[webinar_id] + '</option>';
            }

            html+= '</select>';

             $('.modal-body').append(html);
        }
    });
}

我无法弄清楚我的生活在这里是什么问题。我已经尝试了我能想到的一切。记录xhr,记录responseJSON,将数据类型设置为json。这是一个简单的获取请求,它正在工作,但控制台似乎并不这么认为。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

好的,所以我想出了这个。我应该说&#34;我修好了#34;我仍然不知道它为什么会这样做。无论出于何种原因,jQuery在请求完成之前就已经执行了成功回调,因此我的未定义问题。我把它换成了好的&#39;香草javascript,它工作得很好。至于为什么它发生在jquery,我没有答案。希望这会帮助其他人。

答案 1 :(得分:0)

你的根本原因是你没有提到dataType:&#39; JSON&#39;作为您的AJAX请求的参数。 因此有两种方法可以解决您的问题。 1.添加dataType参数。 2.使用jQuery.parseJSON()解析返回的结果。

解决方案1 ​​

&#13;
&#13;
url: 'endpoint',
data: {
       from: from,
       to: to,
       credential: credential
        },
dataType:'text json'
&#13;
&#13;
&#13;

解决方案2

&#13;
&#13;
var obj = jQuery.parseJSON(reply);
alert( obj.list);
&#13;
&#13;
&#13;