针对IE6/IE7中JavaScript json提示缺少标识符、字符串或数字的问题,可以采取以下处理方法:
对于IE6/IE7等低版本浏览器来说,没有原生的JSON对象,需要手动添加JSON对象。我们可以使用下面的代码来添加JSON对象:
if (!window.JSON) {
window.JSON = {
parse: function(sJSON) { return eval("(" + sJSON + ")"); },
stringify: (function() {
var toString = Object.prototype.toString;
var isArray = Array.isArray || function(a) { return toString.call(a) === '[object Array]'; };
var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'};
var escFunc = function(m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); };
var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
return function stringify(value) {
if (value == null) {
return 'null';
} else if (typeof value === 'number') {
return isFinite(value) ? value.toString() : 'null';
} else if (typeof value === 'boolean') {
return value.toString();
} else if (typeof value === 'object') {
if (typeof value.toJSON === 'function') {
return stringify(value.toJSON());
} else if (isArray(value)) {
var res = '[';
for (var i = 0; i < value.length; i++)
res += (i ? ', ' : '') + stringify(value[i]);
return res + ']';
} else {
var tmp = [];
for (var k in value) {
if (value.hasOwnProperty(k))
tmp.push(stringify(k) + ': ' + stringify(value[k]));
}
return '{' + tmp.join(', ') + '}';
}
} else {
return '"' + value.toString().replace(escRE, escFunc) + '"';
}
};
})()
};
}
这段代码会在全局作用域下设置一个JSON
对象,并添加parse
和stringify
方法。在IE6/IE7等低版本浏览器中使用时,先引入这段代码。
如果手动添加JSON对象比较麻烦,我们可以引入一个JSON-RPC库。JSON-RPC是一个轻量级的远程过程调用(RPC)协议,使用JSON作为序列化格式。JSON-RPC库提供了完整的JSON支持,包括JSON编码和解码功能。下面是一个引入JSON-RPC库的例子:
<script src="https://raw.githubusercontent.com/douglascrockford/JSON-js/master/json2.js"></script>
<script src="https://raw.githubusercontent.com/argo-rest/json-rpc-js/master/jsonrpc.js"></script>
<script>
// 使用JSON-RPC库
var json = JSON.stringify({ foo: "bar" });
</script>
这种方法不需要手动添加JSON对象,只需要在页面中引入JSON-RPC库即可。
以上是关于IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题的处理方法及其示例。
本文链接:http://task.lmcjl.com/news/10878.html