Javascript对象返回为JSON

时间:2015-11-03 00:04:33

标签: javascript json ajax javascript-objects

我正在处理这个脚本,成功的$ .ajax调用必须调用一个函数,它应该以{{1​​}}格式返回JSON对象作为JSON,以便我可以成功访问它身体。我能够返回一个格式很好的字符串,但我无法访问对象的属性。这是[object object]的实际内容:

[object object]

它就像JavaScript对象中的对象。第一个对象称为employee,嵌套对象称为card。我无法理解我在做什么错。我试图在文字中定义对象:

{"id":"12","created_at":"2015-10-30T21:30:44.457Z", 
"card":{"id":"67","number":"89990","expires":"2018"},
"verification":"required"}

我想在$ .ajax调用中访问它:

function get_employee()
{
var employee = [];
var employee_data = '[{"id":"12","created_at":"2015-10-30T21:30:44.457Z", 
"card":[{"id":"67","number":"89990","expires":"2018"}],
"verification":"required"}]';
employee = JSON.parse(JSON.stringify(employee_data));
return employee;
}

但是当我在console.log(params.token.id)时,我收到一个错误,说params.token.id是未定义的,在表单中也是同样的错误。我的问题是:我该怎么做?我错过了什么?

注意:当我在console.log(params)时,它会打印我在函数中定义的纯字符串,但它不会返回[object object]。当我在firebug中调试时,它还将返回的响应显示为html字符串而不是JSON。我的问题是我希望以JSON格式接收它,并将其属性作为普通的javascript对象访问。

提前感谢帮助!

2 个答案:

答案 0 :(得分:1)

您的employee_data已经是一个JSON字符串,不需要再次.stringify(),否则它将再次转义字符串,因此.parse()方法将返回原始JSON字符串而不是你想要的对象。

答案 1 :(得分:1)

通常,您将从ajax调用中获取JSON数据,如下所示:

$.ajax( {
    type: "POST",
    url: 'my_url/process',
    dataType: 'json',                // !
    success: function(data) {        // Now, data will be an Object
        ...
    }
} )

my_url/process的服务器只返回JSON字符串。

但是,如果要使用get_employee返回对象,则无需使用JSON.parse:只需使用JavaScript Object Notation声明对象:

function get_employee()
{
    return {
       employee: {
           id: 12,
           created_at: "2015-10-30T21:30:44.457Z",
           card: { id:"67", number":"89990", expires:"2018" },
           verification:"required"
       }
    };
}

此外,除了修复各种语法错误外,请确保正确访问该卡:

frm.append("<input type='hidden' name='card_id' value='" + params.employee.card.id+ "'>");