【发布时间】:2016-02-15 19:12:32
【问题描述】:
这就是我想要实现的目标: 我想使用 raphael.js 创建一个交互式地图。 使用 Php,我从 MySql DB 获取数据并转换为 JSON 文件。 到目前为止一切顺利。
在我的 raphael js 文件中,我现在必须:
- 获取这些数据
- 使用它们来修改我的 raphael 文件。
我目前卡在这第一步。
这是我的简化 JSON 文件(我们称之为 country.json):
[
{
"id": "1",
"type": "Country",
"title": "France",
"published": "1",
"description": "Republic"
},
{
"id": "2",
"type": "Country",
"title": "Belgium",
"published": "0",
"description": "Monarchy"
}
]
这里是简化的 raphael.js
var rsr = Raphael('map', '548', '852');
var countries = [];
var france = rsr.path("M ... z");
france.data({'published': '1', 'type': '', 'title': '', 'description':''});
var belgium = rsr.path("M ... z");
belgium.data({'published': '0', 'type': '', 'title': '', 'description':''});
countries.push(france,belgium);
在 raphael js 结束时,我发出 Ajax 请求(使用 jquery)来获取我的 JSON 数据:
$.ajax({
type : 'GET',
url : 'system/modules/countries.json',
data: {get_param: 'value'},
dataType : 'json',
success : function(data, statut){
console.log(statut);
},
error : function(data, statut,erreur){
console.log(statut);
},
complete: function (data) {
var json = $.parseJSON(data);
$(json).each(function(i,val){
$.each(val,function(k,v){
console.log(k+" : "+ v);
});
});
}
});
麻烦来了: 我通过成功功能获得“成功”状态。 但是我在完成脚本时遇到了错误:
Uncaught SyntaxError: Unexpected token o
我错过了什么?无法弄清楚与http://jsfiddle.net/fyxZt/4/ 有什么不同(参见how to parse json data with jquery / javascript?)
这只是第 1 部分 :-) 假设有人可以帮助我解决这个问题,我仍然不知道如何编写 js 循环来设置 raphael vars 属性:
var rsr = Raphael('map', '548', '852');
var countries = [];
var france = rsr.path("M ... z");
france.data({'published': '1', 'type': 'Country', 'title': 'France', 'description':'Country'});
var belgium = rsr.path("M ... z");
belgium.data({'published': '0', 'type': 'Country', 'title': 'Belgium', 'description':'Monarchy'});
communes.push(france,belgium);
感谢您的帮助,请原谅我不完美的英语! 文尼
【问题讨论】:
-
如果错误来自
var json = $.parseJSON(data);它可能与您的 json 文件有关...顺便说一句,您的“简化”json 不是有效的,您应该将键放在双引号之间。跨度> -
嗨 Noodl3,你是对的......我的错误:我使用 JSON 视图插件从浏览器中复制了代码。我的实际 JSON 文件实际上使用“keys”:“”是有效的。我编辑我的帖子
-
我认为您的代码没有任何问题,我一直认为错误来自 json,因为此调用会引发完全相同的错误:
jQuery.parseJSON( '{ o"name": "John" }' );。请检查您的网络选项卡,看看服务器发送的 json 是否有效。 -
嗯...我使用了几个 JSON 验证器,一切看起来都很好。此外,我使用 PHP json_encode 生成我的 JSON,所以它不应该是无效的,不是吗?我想知道它是否应该与“responseText”有关,但无法弄清楚。我猜“o”是因为脚本返回“object”...
-
天啊,当然!您正在使用 complete() 函数,没有
data参数传递给此回调,jquery api 说: Type: Function( jqXHR jqXHR, String textStatus )
标签: javascript jquery json raphael