功能:想访问json文件获取数据。
习惯的方式是这样
$.get( "test.json", function( data ) {
alert( "Data Loaded: " + data );
});
```
我完全可以自己写一个AJAX方式获取JSON,但是考虑到平台间的切换和后续功能扩展,所以尽可能不使用第三方库或者原生JS实现。以免导致未来的冲突问题。
现在系统里面明明有project.json文件,它是怎么加载的呢?于是我看到了这样的源码。请注意cc._isNodeJs也就是说有可能切换到未来运行的时候有可能切换到NodeJs中去。
_loadTxtSync: function (url) {
if (!cc._isNodeJs) {
var xhr = this.getXMLHttpRequest();
xhr.open("GET", url, false);
if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
// IE-specific logic here
xhr.setRequestHeader("Accept-Charset", "utf-8");
} else {
if (xhr.overrideMimeType) xhr.overrideMimeType("text\/plain; charset=utf-8");
}
xhr.send(null);
if (!xhr.readyState == 4 || xhr.status != 200) {
return null;
}
return xhr.responseText;
} else {
var fs = require("fs");
return fs.readFileSync(url).toString();
}
}
```
最后我获取json的代码就变更为这样
var txt = cc.loader._loadTxtSync("res/json/list.json");
var data = JSON.parse(txt);
```
总结给各位看见的代码不是简单而是精悍。