jsonData
变量中的JSON无效。只有属性应该位于双引号内。只要您将数据转换为JSON,请使用解析器(explained on json.org),而不要手动编写。您可以随时使用诸如JSONLint之类的工具来检查JSON是否有效。
任何数字(整数,小数,浮点数)都是有效的JSON数据类型,不必用双引号封装。
这是有效的JSON:[{"x": 1, "y": 2}, {"x": 3, "y": 4}]
但是,如果你没有在源控制和使用Ajax检索JSON,你可以提供一个回调函数来dataFilter
选项。如果您使用的是jQuery 1.5,那么也有converters
这是广义dataFilter回调。
我怀疑x和y坐标可能是十进制数,这就是为什么我在下面的例子中选择使用parseFloat
而不是parseInt
。
使用dataFilter
回调函数实施例(预jQuery的1.5):使用
$.ajax({
url: "/foo/",
dataFilter: function(data, type){
if (type == "json") {
var json = $.parseJSON(data);
$.each(json, function(i,o){
if (o.x) {
json[i].x = parseFloat(o.x);
}
if (o.y) {
json[i].y = parseFloat(o.y);
}
});
}
return data;
},
success: function(data){
// data should now have x and y as float numbers
}
});
实施例一converter
(jQuery的1.5或更高版本):
$.ajaxSetup({
converters: {
"json jsoncoords": function(data) {
if (valid(data)) {
$.each(data, function(i,o){
if (o.x) {
data[i].x = parseFloat(o.x);
}
if (o.y) {
data[i].y = parseFloat(o.y);
}
});
return data;
} else {
throw exceptionObject;
}
}
}
});
$.ajax({
url: "/foo/",
dataType: "jsoncoords"
}).success(function(data){
// data should now have x and y as float numbers
});
您是否使用ajax检索json? – mekwall 2011-04-29 16:56:29