【问题标题】:JavaScript Object Structure IssueJavaScript 对象结构问题
【发布时间】:2017-06-08 17:09:57
【问题描述】:

我在遍历从上传的文件数据返回的对象时遇到问题,但似乎返回的对象结构可能会阻止我从响应中的每个对象捕获特定属性,或者我误解了如何我应该访问这个对象。当我登录data.length 时,我得到 995,我认为这是对象响应中的字符数。当我登录 data[prop] 时,它会记录每个单独的字符。

这是我返回的文件对象数据:

[
  {
    "fieldname": "fileUpload",
    "originalname": "Screen Shot 2017-01-08 at 12.23.39 PM.png",
    "encoding": "7bit",
    "mimetype": "image/png",
    "size": 39881,
    "bucket": "test",
    "key": "1/2017-01-23/screen-shot-2017-01-08-at-12.23.39-pm.png",
    "acl": "public-read",
    "contentType": "image/png",
    "contentDisposition": null,
    "storageClass": "STANDARD",
    "metadata": null,
    "location": "https://test.s3.amazonaws.com/1/2017-01-23/screen-shot-2017-01-08-at-12.23.39-pm.png",
    "etag": "\"sfasgltg702o\""
  },
  {
    "fieldname": "fileUpload",
    "originalname": "Screen Shot 2017-01-08 at 12.21.04 PM.png",
    "encoding": "7bit",
    "mimetype": "image/png",
    "size": 58386,
    "bucket": "test",
    "key": "1/2017-01-23/screen-shot-2017-01-08-at-12.21.04-pm.png",
    "acl": "public-read",
    "contentType": "image/png",
    "contentDisposition": null,
    "storageClass": "STANDARD",
    "metadata": null,
    "location": "https://test.s3.amazonaws.com/1/2017-01-23/screen-shot-2017-01-08-at-12.21.04-pm.png",
    "etag": "\"151353j53j51u5j135ju\""
  }
]

jQuery AJAX POST 请求上传文件并将对象返回到data:

$.ajax({
            url: '/app/sign',
            type: 'POST',
            data: formData,
            processData: false,
            contentType: false,
            success: function(data){
                console.log('upload successful! ' + data);

                console.log('Just the key ' + data.length);
                for(var prop in data){
                    console.log(data[prop]);
                }
            },
            error: function(error){
                console.log('error ' + JSON.stringify(error));
            }
        });

【问题讨论】:

    标签: javascript jquery javascript-objects for-in-loop


    【解决方案1】:

    data 是一个 JSON 字符串,您必须使用 JSON.parse 将其解析回对象数组,如下所示:

    success: function(data){
        var arr = JSON.parse(data);
    
        // use arr as array
        console.log(arr.length);
        // arr[0] is the first object
    }
    

    【讨论】:

      【解决方案2】:

      它只是一个 JSON 格式的 字符串。您需要JSON.parse 转换为JS 对象,或者使用$.getJSON()

      【讨论】:

        【解决方案3】:

        假设你想访问第一个fieldname,你可以这样访问它data[0].fieldname。第二个也是如此:data[1].fieldname。为什么 ?因为你的数据是这样解释的:

        0: {"fieldname": "fileUpload", ...}, 1: {"fieldname": "fileUpload", ...}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-10
          相关资源
          最近更新 更多