我是jquery新手,我有一个返回json的php,因此我可以从jquery中获取它,但是获取结果存在问题。

这是我的代码:

calculate: function(me, answer, res_id, soulmates) {
        console.log('CALCULATE: ');
        var deferred = $.Deferred();
        data = {
            'me': me,
            'answer': answer,
            'resid': res_id,
        };
        $.ajax({
            url: appConfig.calculate_url,
            type: 'post',
            beforeSend: function() {
                console.log('BEFORE');
                Site.switch_calculation_animations();
                console.log('AFTER');
                console.log(appConfig.calculate_url);
            },
            data: JSON.stringify(data),
            timeout: 15000
        }).done(function(ans) {
            console.log(ans);
            console.log(ans.ok);
            console.log(ans.combi_id);
            console.log(ans.slug);
            if (ans.ok == 'yes') {
                console.log('YES');
                deferred.resolve(ans);
            }
        }).fail(function(jqXHR, textStatus, error) {
            console.log('ERROR');
            Site.handle_exception('calculate', {
                'textStatus': textStatus,
                'error': error
            });
            deferred.reject();
        });
        console.log('END CALCULATE');
        return deferred.promise();
    },


我得到的控制台日志是:

CALCULATE:
app.js?v=35:242 BEFORE
app.js?v=35:244 AFTER
app.js?v=35:245 /es/test_calculate/4170/waiting/
app.js?v=35:266 END CALCULATE
app.js?v=35:250 {"ok":"yes","combi_id":6059244666,"slug":"true"}
app.js?v=35:251 undefined
app.js?v=35:252 undefined
app.js?v=35:253 undefined


因此,尽管ok值为“ yes”,但不要输入if命令。为什么?我想念的是什么?

谢谢

最佳答案

尝试这个:

    }).done(function(ans) {
        var data = $.parseJSON(ans)
        console.log(data);
        console.log(data.ok);
        console.log(data.combi_id);
        console.log(data.slug);
        if (data.ok == 'yes') {
            console.log('YES');
            deferred.resolve(data);
        }

10-07 19:43
查看更多