我在混合JavaScript库(Polymaps)和jQuery时遇到了一些问题。 每当用户从datepicker中选择一个值时,我想调用一个不同的文件。
文件名语法为:
4sq_'the selected day value' _ 'the selected month value'.json
这是日期选择代码:
$("#datepicker").datepicker({
dateFormat: 'yy/mm/dd',
inline: true,
minDate: new Date(2011, 8 - 1, 20),
maxDate:new Date(2011, 12 - 1, 31),
altField: '#datepicker_value',
onSelect: function(){
var selDay = $("#datepicker").datepicker('getDate').getDate();
var selMonth = $("#datepicker").datepicker('getDate').getMonth() + 1;
var selYear = $("#datepicker").datepicker('getDate').getFullYear();
plotMap()
}
});
并且文件名包含选择的值,如下所示:
function plotMap(){
map.add(po.geoJson()
.url("4sq_"+selDay+"_"+selMonth+".json")
.on("load", loadAreas));
};
我也试过了代码:
function plotMap(){
map.add(po.geoJson()
.url("4sq_"+
$("#datepicker").datepicker('getDate').getDate()
+"_"+
$("#datepicker").datepicker('getDate').getMonth()
+".json")
.on("load", loadAreas));
};
但它引发了Access to restricted URI denied
错误。
我做错了什么?有什么建议吗?
答案 0 :(得分:1)
尝试这样的事情:
$("#datepicker").datepicker({
dateFormat: 'yy/mm/dd',
inline: true,
minDate: new Date(2011, 8 - 1, 20),
maxDate:new Date(2011, 12 - 1, 31),
altField: '#datepicker_value',
onSelect: function(){
var selDay = $("#datepicker").datepicker('getDate').getDate();
var selMonth = $("#datepicker").datepicker('getDate').getMonth() + 1;
plotMap(selDay, selMonth);
}
});
function plotMap(day, month){
map.add(po.geoJson()
.url("4sq_"+day+"_"+month+".json")
.on("load", loadAreas));
}
答案 1 :(得分:0)
该错误表示您违反了Single Origin Policy,即您尝试访问跨域网址。
查看您的网址,它似乎不是跨域网址。当Polymap尝试使用绝对URL并以某种方式产生翻译错误时,有可能。您可能需要逐步了解Polymap如何执行.url()
功能,从the latest source的第184行开始。
检查JSON是否确实位于不同来源的一种方法是查看Firebug或Web Inspector中的请求,并根据{{3查看对JSON文件的请求是否确实位于同一域中}};例如,origin determination rules与http://www.example.com的来源不同。