我正在处理这个脚本,成功的$ .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对象访问。
提前感谢帮助!
答案 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+ "'>");