为了账号安全,请及时绑定邮箱和手机立即绑定

从 form.submit 而非商店中读取 PHP 响应中的嵌套 JSON

从 form.submit 而非商店中读取 PHP 响应中的嵌套 JSON

PHP
繁华开满天机 2023-05-12 15:07:04
我正在使用 ExtJS 6.0.x 构建 Web 应用程序。一方面,用户可以上传一个excel文件,然后我会解析它并将数据保存到后端。我调用的用于上传和解析的 PHP 返回一个嵌套的 JSON 对象,其结构如下所示:{    "success":false,    "message":"Fail",    "row_error_object_array":[{"data1":"val1","data2":"val2","data3":"val3","data4":"val4","data5":["array"]}],    "overall_error_array":[]}根据成功或失败,错误数组可能有也可能没有值。到目前为止,我能够从我的 PHP 将此格式返回到 ExtJS 框架。通过执行以下操作,我可以获得非数组值、成功和消息:failure: function (form, action) {    console.log('fail hit!');    var data = Ext.JSON.decode(action.response.responseText);    console.log('action is = ' + action);    var success_ = data.success;    var message_ = data.message;    var row_error_ = data.row_error_object_array;    var overall_error_ = data.overall_error_array;    console.log('succees: ' + success_);    console.log('message: ' + message_);    console.log('row_error: ' + row_error_);    console.log('overall_error: ' + overall_error_);    var row_error_object = Ext.JSON.decode(row_error_);    var overall_error_object = Ext.JSON.decode(overall_error_);    console.log('row_error_object: ' + row_error_object);    console.log('overall_error_object: ' + overall_error_object);    if(row_error_.length > 0){        console.log('row error present!!');        console.log('row error data1 = ' + row_error_.data1);        console.log('row error data2 = ' + row_error_.data2);        console.log('row error data3 = ' + row_error_.data3);        console.log('row error data4 = ' + row_error_.data4);        console.log('row error data5 = ' + row_error_.data5);    }},在这种情况下,成功案例不重要,因为错误数组为空。但是,日志显示这些:row_error: [object Object]row error data1 = undefinedrow error data2 = undefinedrow error data3 = undefinedrow error data4 = undefinedrow error data5 = undefined不确定我在这里做错了什么,ExtJS 知道它们是一个对象,但是当我尝试这样做时object.property,它显示我未定义。如何反序列化来自服务器的嵌套 JSON 响应?或者有什么好的解决方法吗?
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

一个JSON.decode就够了。你尝试row_error_array像对象一样使用 - 这是错误的。您可以获得data数组中第一个元素的键:

console.log('row error data1 = ' + row_error_[0].data1);

小提琴


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信