【问题标题】:JSON external file vs defined in JSJSON 外部文件 vs 在 JS 中定义
【发布时间】:2014-05-21 08:16:45
【问题描述】:

关于何时使用 JSON 外部文件(例如 jQuery)的一些参数是什么

$.getJSON('external.json',function(data){});

(ajax 检索)与用 javascript 定义它

var myJson = { "someVar": { "1": ["test1","test2"], "2": ["test3","test4"]} }

什么是“正确”的做法?它是否取决于 JSON 长度,还是有任何其他因素可以告诉您使用哪种方法?

我的看法:在加载另一个应该很慢的文件之间进行选择,因为您正在通过 ajax 调用加载数据,或者在已经打包的 javascript 文件中添加大量行,这也不是一件好事。当然必须有一些区别,你应该在哪里使用一个或另一个......?

我不仅对速度差异感兴趣(从 ajax 获取文件当然更慢),而且对其他方面感兴趣,例如什么时候通常使用什么以及在某些情况下应该使用什么......

【问题讨论】:

    标签: javascript jquery json getjson


    【解决方案1】:

    第一个是以下的简写:

    $.ajax({
      dataType: "json",
      url: url,
      data: data,
      success: success
    });
    

    这是一个 Ajax 请求,比将简单的 JSON 对象放入文件需要更多时间。 如果可能的话,我更喜欢第二个。另外,如果你参加了有好的表演,第一个更长。

    时间(加载+解析 2 个文件)>> 时间(读取 Javascript 对象)

    【讨论】:

    • 感谢您的回答。我知道第一个只是 ajax 调用......但仍然:在 javascript 中定义 150 行 json 也不是一个非常好的和清晰的解决方案,或者是吗?
    • 这不是问题。你可以把它写在一行上。我会做什么:使用coffeescript并使用将一个文件的内容附加到另一个文件的胶水脚本。
    【解决方案2】:

    如果您的数据在页面创建时已知,您可能最好使用如下对象字面量:

    var myJson = {...}
    

    然而,正如 Kursion 所说,

    $.getJSON(...)
    

    是通过 ajax 异步检索 json 数据的简写方法。如果您想从服务器检索页面加载时未知的数据,您可以使用它...

    例如,如果用户在输入控件中输入搜索词,您可能希望检索 JSON 以响应该输入而不执行整个页面更新。您不能简单地预先定义一个 javascript 对象,因为您不会事先知道搜索词是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2021-02-05
      • 2020-04-13
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多