Javascript 对象 return 作为 JSON
Javascript object return as JSON
我正在编写这个脚本,其中 $.ajax 调用成功时必须调用一个函数,该函数应该 return 一个 Javascript 对象作为 JSON 格式 [object object]
,这样我就可以在成功正文中访问它。我能够 return 一个格式良好的字符串,但我无法访问对象的属性。这是 [object object]
的实际内容:
{"id":"12","created_at":"2015-10-30T21:30:44.457Z",
"card":{"id":"67","number":"89990","expires":"2018"},
"verification":"required"}
它就像是 JavaScript 对象中的对象。第一个对象称为员工,嵌套对象称为卡。我不明白我在做什么错。我试图将文字中的对象定义为:
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();
}
}
但是当我 console.log(params.token.id) 我得到一个错误,说 params.token.id 是未定义的,在表单中也是同样的错误。我的问题是:我应该怎么做?我错过了什么?
注意: 当我 console.log(params) 时,它会打印我在函数中定义的纯字符串,但它不会 return [对象对象]。当我在 firebug 中调试时,它还会将 returned 响应显示为 html 字符串而不是 JSON。我的问题是我想以 JSON 的形式接收它,并像普通的 javascript 对象一样访问它的属性。
在此先感谢您的帮助!
你的 employee_data
已经是一个 JSON 字符串,没有必要再次 .stringify()
否则它会再次转义字符串,结果是 .parse()
方法将 return 你原来的 JSON 字符串而不是你想要的对象。
通常,您会从 ajax 调用中获取 JSON 数据,如下所示:
$.ajax( {
type: "POST",
url: 'my_url/process',
dataType: 'json', // !
success: function(data) { // Now, data will be an Object
...
}
} )
而您在 my_url/process
的服务器只是 return 的 JSON 字符串。
然而,如果你想用你的get_employee
到return一个对象,就没有必要使用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+ "'>");
我正在编写这个脚本,其中 $.ajax 调用成功时必须调用一个函数,该函数应该 return 一个 Javascript 对象作为 JSON 格式 [object object]
,这样我就可以在成功正文中访问它。我能够 return 一个格式良好的字符串,但我无法访问对象的属性。这是 [object object]
的实际内容:
{"id":"12","created_at":"2015-10-30T21:30:44.457Z",
"card":{"id":"67","number":"89990","expires":"2018"},
"verification":"required"}
它就像是 JavaScript 对象中的对象。第一个对象称为员工,嵌套对象称为卡。我不明白我在做什么错。我试图将文字中的对象定义为:
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();
}
}
但是当我 console.log(params.token.id) 我得到一个错误,说 params.token.id 是未定义的,在表单中也是同样的错误。我的问题是:我应该怎么做?我错过了什么?
注意: 当我 console.log(params) 时,它会打印我在函数中定义的纯字符串,但它不会 return [对象对象]。当我在 firebug 中调试时,它还会将 returned 响应显示为 html 字符串而不是 JSON。我的问题是我想以 JSON 的形式接收它,并像普通的 javascript 对象一样访问它的属性。
在此先感谢您的帮助!
你的 employee_data
已经是一个 JSON 字符串,没有必要再次 .stringify()
否则它会再次转义字符串,结果是 .parse()
方法将 return 你原来的 JSON 字符串而不是你想要的对象。
通常,您会从 ajax 调用中获取 JSON 数据,如下所示:
$.ajax( {
type: "POST",
url: 'my_url/process',
dataType: 'json', // !
success: function(data) { // Now, data will be an Object
...
}
} )
而您在 my_url/process
的服务器只是 return 的 JSON 字符串。
然而,如果你想用你的get_employee
到return一个对象,就没有必要使用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+ "'>");