Javascript 对象返回 JSON 格式

标签 javascript json ajax javascript-objects

我正在编写这个脚本,其中 $.ajax 调用成功后必须调用一个函数,该函数应以 [object object] 格式返回一个 Javascript 对象作为 JSON,这样我可以在成功主体中访问它。我能够返回格式良好的字符串,但无法访问对象的属性。这是[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) 时,它会打印我在函数中定义的纯字符串,但它不会返回 [object object]。当我在 firebug 中调试时,它还将返回的响应显示为 html 字符串而不是 JSON。我的问题是我想以 JSON 的形式接收它,并作为普通的 javascript 对象访问它的属性。

提前感谢您的帮助!

最佳答案

通常,您会从 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+ "'>");

关于Javascript 对象返回 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489247/

相关文章:

Javascript 变量不通过 ajax 更新

javascript - node.js RegExp 不处理带有 'g' 标志的多个匹配项?

jQuery ajax检查并提交表单,当ajax返回nofound时总是必须提交两次

c++ - 对 QJson::Parser::Parser 的 undefined reference

javascript - PHP Symfony API 和 jQuery Ajax 请求

Ajax 与 JQuery : 200 ok, 但不是 "success"

jquery - 使用jquery和ajax添加好友功能

javascript - 文本框中的占位符和光标对齐方式

javascript - 如何在位置 : n in div 插入新元素

objective-c - 在 Objective C 中按顺序保持 JSON 对象的字典键