0

我已经搜索了所有内容,但没有找到关于仅使用 JavaScript 和/或 PHP 导入 JSON 文件(在同一服务器/目录上)的全面教程或说明。我知道使用图书馆更好,但我想知道如何在没有图书馆的情况下做到这一点。

假设我在.json文件中有以下内容

{
   "customers":[
   {"name":"Joe Smith","age":"36"},
   {"name":"Jane Doe","age":"27"}
   ]
}

我将如何有效地将其拉入脚本并使用其数据?

4

2 回答 2

5

不使用 Ajax 的一种简单方法是将文件的内容从 PHP 回显到 javascript 变量中,如下所示。因为 JSON 使用与 Javascript 中的对象相同的结构,所以可以直接将数据用作变量。

var myData = <?php echo file_get_contents('path/to/file.json'); ?>;

// 2
console.log(myData.customers.length);

请注意,这是假设数据是有效的 JSON。此外,请确保文件的来源是可信的,因为这可以在您的文档上下文中执行任何操作。

于 2013-03-07T18:40:43.983 回答
2

假设您想动态获取数据,您将使用XMLHttpRequest(请求文本)和JSON.parse(解析它)的组合。

function getData(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open(url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status == 200) {
                callback(JSON.parse(xhr.responseText));
            }
            else {
                callback(null); // Or something to indicate failure
            }
        }
    };
    xhr.send();
}

// usage
getData("/path/to/your/file", function(data) {
    if (data === null) {
        // Handle the error
    }
    else {
        // Use `data` here
    }
});

现在,图书馆的用武之地:

  • 一些较旧的浏览器不支持new XMLHttpRequest并要求您以各种不同的方式创建 XHR 对象。图书馆通过为您处理这些来帮助您。

  • 一些较旧的(不是那么旧的)浏览器JSON.parse本身还不支持,因此您可能需要一个 shim。您可以在Douglas Crockford 的 github 页面上找到几个。但同样,一个体面的图书馆会为你处理这个问题。

于 2013-03-07T18:41:18.983 回答