Javascript对象返回为JSON

Javascript对象返回为JSON,javascript,json,ajax,javascript-objects,Javascript,Json,Ajax,Javascript Objects,我正在编写这个脚本,其中成功时的$.ajax调用必须调用一个函数,该函数应以JSON格式返回Javascript对象,格式为[object object],以便我可以在成功体中访问它。我能够返回格式良好的字符串,但无法访问对象的属性。这是[object object]的实际主体: {"id":"12","created_at":"2015-10-30T21:30:44.457Z", "card":{"id":"67","number":"89990","expires":"2018"}, "v

我正在编写这个脚本,其中成功时的$.ajax调用必须调用一个函数,该函数应以JSON格式返回Javascript对象,格式为
[object object]
,以便我可以在成功体中访问它。我能够返回格式良好的字符串,但无法访问对象的属性。这是
[object object]
的实际主体:

{"id":"12","created_at":"2015-10-30T21:30:44.457Z", 
"card":{"id":"67","number":"89990","expires":"2018"},
"verification":"required"}
它就像JavaScript对象中的一个对象。第一个对象称为employee,嵌套对象称为card。我不明白我做错了什么。我尝试将文本中的对象定义为:

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;
}
这是我希望在$.ajax调用中访问它的方式:

$.ajax {
type: "POST",
url: 'my_url/process',
//etc etc
success: function(data){
//calling my get_employee function now
params = get_employee();
//this is how I want to use the returned object as JSON
frm = $("<form action='/save/employee/database' method='POST'></form>");
frm.append("<input type='hidden' name='employee_id' value='" + params.employee.id + "'>");
frm.append("<input type='hidden' name='card_id' value='" + params.card.id+ "'>");
frm.append("<input type='hidden' name='request_id' value='" + data + "'>");
frm.submit();
}
}
$.ajax{
类型:“POST”,
url:“我的url/进程”,
//等等
成功:功能(数据){
//现在调用我的get_employee函数
params=get_employee();
//这就是我希望将返回的对象用作JSON的方式
frm=$(“”);
frm.追加(“”);
frm.追加(“”);
frm.追加(“”);
frm.submit();
}
}
但是当我console.log(params.token.id)时,我得到一个错误,说params.token.id是未定义的,在表单中也是相同的错误。我的问题是:我应该怎么做?我错过了什么

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


提前感谢您的帮助

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

通常,您将从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对象表示法来声明对象:

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+ "'>");
frm.append(“”);

Hi@Kenney谢谢你的解释。我要走你的路,试着测试一下。但是,它在
created\u at:time\u stamp
字段的对象文本中给出了一个语法错误。请注意,
time\u stamp
是一个包含当前时间和日期的变量。我确信它允许将变量作为键的值传递。这里怎么了?嗨,格里菲斯,谢谢你。你是对的,它已经是一个JSON了。现在,如果我不使用json.prase,那么当我使用变量作为对象文本中键的值时,我会得到一个错误。这样:
employee:{id:id,created\u at:time\u stamp}
我做错什么了吗?非常感谢你们两位。这真的奏效了:)