从form.submit而不是存储读取PHP响应中的嵌套JSON

从form.submit而不是存储读取PHP响应中的嵌套JSON,php,json,extjs,extjs4.2,Php,Json,Extjs,Extjs4.2,我正在使用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":["ar

我正在使用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框架。通过执行以下操作,我能够获得非数组值、success和message:

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 = undefined
row error data2 = undefined
row error data3 = undefined
row error data4 = undefined
row error data5 = undefined
不确定我在这里做错了什么,ExtJS知道它们是一个对象,但是当我尝试执行
object.property
技巧时,它显示我没有定义


如何反序列化来自服务器的嵌套JSON响应?或者有什么好的解决方法吗?

一个
JSON.decode
就足够了。你试着用
row\u error\u array
像object一样-这是错误的。您可以获取数组中第一个元素的
数据
键:

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

一个
JSON.decode
就足够了。你试着用
row\u error\u array
像object一样-这是错误的。您可以获取数组中第一个元素的
数据
键:

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

失败-是否回调form.submit方法?@pvlt是。还有一个成功的回调函数,但这并不重要。ExtJS 6.0.x。(来自问题的主体)或ExtJS 4.2(来自问题的标签)?失败-是否回调form.submit方法?@pvlt是。还有一个成功的回调函数,但这并不重要。ExtJS 6.0.x。(来自问题正文)或ExtJS 4.2(来自问题标签)?