I am customising a plugin that has array (if that is what is it) that holds config items:
var config = {
width: "100%",
height: "100%",
source: 'js/timeline/test.json',
css: 'js/timeline/compiled/css/timeline.css',
js: 'js/timeline/compiled/js/timeline-min.js'
}
What I want to do is take the source: data and replace it with a variable eg:
var mysource = 'path/to/source.json';
var config = {
width: "100%",
height: "100%",
source: mysource ,
css: 'js/timeline/compiled/css/timeline.css',
js: 'js/timeline/compiled/js/timeline-min.js'
}
But as it above it does not work. Can anyone point me in the right direction? Thanks
EDIT: Added full code as requested
$(function() {
$.getJSON('http://www.mysite.com/json.php',
function(data) {
jsonObject = eval(data);
var eventdata = jsonObject.tlall;
});
}); //END ON LOAD
var config = {
width: "100%",
height: "100%",
source: eventdata,
//source: 'js/timeline/test.json',
//start_at_end: true, //OPTIONAL
//hash_bookmark: true, //OPTIONAL
css: 'js/timeline/compiled/css/timeline.css',
js: 'js/timeline/compiled/js/timeline-min.js'
}
-
Is it because you have 2 commas on the line before?Aesthete– Aesthete2012年08月23日 06:21:41 +00:00Commented Aug 23, 2012 at 6:21
-
1@nbrooks sorry guys - that was a mistake when I was transcribing the code. The problem still remainsMeltingDog– MeltingDog2012年08月23日 06:23:38 +00:00Commented Aug 23, 2012 at 6:23
-
2I don't see any problem! Do you have them in same block/function ?Mihai Iorga– Mihai Iorga2012年08月23日 06:24:45 +00:00Commented Aug 23, 2012 at 6:24
-
how do you "re-init" the plugin to use your customised config?Andreas Wong– Andreas Wong2012年08月23日 06:25:52 +00:00Commented Aug 23, 2012 at 6:25
-
2That's not an array btw, it's an object, or list of key:value pairs. Similar to a dictionary in other languages. Somtimes referred to as a hash or map...danwellman– danwellman2012年08月23日 06:38:03 +00:00Commented Aug 23, 2012 at 6:38
3 Answers 3
Change this line:
var eventdata = jsonObject.tlall;
To this:
config.source = jsonObject.tlall;
And remove this line from your config definition:
source: eventdata,
Comments
I don't know how exactly you plan to use config, but you certainly need it to be within the same scope in order to access eventdata. I would say get rid of that altogether, and just add it as a property of the object in the ajax callback (shown in code below).
The difficulty here is that you are stuck waiting on the AJAX callback to fire before you can use config in your scripts; this is why ajax is designed to be used with callbacks executed after a particular event rather than linearly; I would advise you to use config only within that success callback, or add a check to see if getJSON has finished executing.
$(function() {
var config = {
width: "100%",
height: "100%",
css: 'js/timeline/compiled/css/timeline.css',
js: 'js/timeline/compiled/js/timeline-min.js'
};
$.getJSON('http://www.mysite.com/json.php', function(data) {
jsonObject = eval(data);
config.source = jsonObject.tlall;
});
}); //END ON LOAD
1 Comment
Scoping issue, try :
$(function() {
$.getJSON('http://www.mysite.com/json.php', function(data) {
config.source = data.tlall;
});
var config = {
width: "100%",
height: "100%",
css: 'js/timeline/compiled/css/timeline.css',
js: 'js/timeline/compiled/js/timeline-min.js'
}
});