javascript - JSON 与 JavaScript 对象数组。为什么第二种方法的结果与第一种方法不同?以及如何实现这一目标?

标签 javascript arrays json ajax object

我知道这不是有效的 JSON,但是当我直接在代码中将其声明为变量时,我可以将其用作对象。

<script>
//  this will result in object
    var mydata = {
        users: [{
            person: {
                firstName: "Garry",
                lastName: "Finch"
            },
            jobTitle: "Front End Technical Lead",
            twitter: "gazraa"
        }, {
            person: {
                firstName: "Hans",
                lastName: "Wurst"
            },
            jobTitle: "Photographer",
            twitter: "photobasics"
        }, {
            person: {
                firstName: "Paul",
                lastName: "Stark"
            },
            jobTitle: "LEGO Geek",
            twitter: "minifigures"
        }]
    };

    console.log('mydata: ' + mydata);
    console.log(mydata);
</script>

console.log result

现在我想将相同的信息存储到文件“table.data.js”中。 该文件看起来像:(BEGIN 和 END 的内部)

//BEGIN
{
    users: [{
        person: {
            firstName: "Garry",
            lastName: "Finch"
        },
        jobTitle: "Front End Technical Lead",
        twitter: "gazraa"
    }, {
        person: {
            firstName: "Hans",
            lastName: "Wurst"
        },
        jobTitle: "Photographer",
        twitter: "photobasics"
    }, {
        person: {
            firstName: "Paul",
            lastName: "Stark"
        },
        jobTitle: "LEGO Geek",
        twitter: "minifigures"
    }]
}
//END

然后我尝试了不同的方法来读取这个文件

$.ajax({
    contentType: "application/json; charset=utf-8",
    url: "Content/modules/Controls/table/table.data.js",
    data: "{}",
    dataType: "json",
    success: function(data) {
        var json = data;
        console.log(json);
    }
});

然后尝试使用 $.get 和 $.getScript 在任何情况下,结果都不会是同一个对象

//var jqxhr = $.get("Content/modules/Controls/table/table.data.js", function () {
var jqxhr = $.getScript("Content/modules/Controls/table/table.data.js", function (data, textStatus, jqxhr) {
        console.log("success");
    }).done(function (data) {
        console.log(data);
        testdata = JSON.stringify(data);
        console.log(testdata);
  }).fail(function () {
      console.log("error");
  }).always(function () {
      console.log("finished");
  });

结果永远不会是同一个对象。我只能将数据作为“纯”文本记录到控制台中。 我想这对一些有知识的人来说只是一小步,但对我来说实际上是一本七印的书。

编辑: 感谢您的所有回复。 总之,这意味着,不可能加载外部数据,将其存储在“mydata”这样的变量中,然后以与直接在代码中声明它的方式相同的方式工作?然后我会将数据更改为有效的 JSON。

然后我会给@Quentin 颁发最短精确答案奖章。 但是,感谢大家的澄清。

最佳答案

您的文件不是有效的 JSON(因为您没有引用属性名称)。

您的文件不是有效的 JavaScript(因为您不能让对象文字漂浮在中间,您需要(例如)在其左侧进行赋值)。

您应该更改该文件,使其成为有效的 JSON 或有效的 JavaScript(最好是前者)。

关于javascript - JSON 与 JavaScript 对象数组。为什么第二种方法的结果与第一种方法不同?以及如何实现这一目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873974/

相关文章:

javascript - 请在向下滚动时隐藏固定标题,在向上滚动时显示并悬停版本 2

javascript - 如何在使用 PHP 单击提交按钮后删除文件之前显示警告消息

javascript - 将 JavaScript 函数放入 Angularjs 文件中

java - 服务器端 GCM 返回错误 400

javascript - 如何从 JSON 对象数组中检索不同类型的数据并使用它?

javascript - 使用 JQuery/JavaScript 调用/单击 mailto 链接

javascript - 使用过滤器过滤对象

arrays - 在可选数组参数中指定默认数组值

java - 给定一个整数数组,反转每个最大严格升序子数组

javascript - 将 JSON 存储在 HTMl 中