Study session data returns undefined
Hi,
I have been trying many different ways to use study session data in jsPsych unsuccessfully. I found that the only way I can access the jatos.studySessionData
object is once the jatos.onLoad()
function has been called. Otherwise, I always get an undefined object.
Here is my code simplified to show what I want to do:
<script> /* Initialize jsPsych*/ var jsPsych = initJsPsych({ show_progress_bar: true, on_trial_start: function () { jatos.addAbortButton({ action: revert_batch }); }, on_finish: function() { jatos.startNextComponent(jsPsych.data.get().json()); } }); timeline = []; var start_idx; var end_idx; var block_prompt; var cat_stim_paths; var cat_stim; //Code that needs access to jatos.studySessionData if (jatos.studySessionData.last_block_num == 0){ console.log('batch 1'); start_idx = 0; end_idx = 2; block_prompt = "<h2>Block 1 of Part 2 of the experiment will now start. Press any key to begin.</h2>"; } else if (jatos.studySessionData.last_block_num == 1) { console.log('batch 2'); start_idx = 2; end_idx = 4; block_prompt = "<h2>Block 2 of Part 2 of the experiment will now start. Press any key to begin.</h2>"; } else if (jatos.studySessionData.last_block_num == 2) { console.log('batch 3'); start_idx = 4; end_idx = 6; block_prompt = "<h2>Block 3 of Part 2 of the experiment will now start. Press any key to begin.</h2>"; } else { //always ends up here since jatos.studySessionData returns undefined console.log('batch 4'); start_idx = 6; block_prompt = "<h2>Block 4 of Part 2 of the experiment will now start. Press any key to begin.</h2>"; }; // Get session data cat_stim_paths = jatos.studySessionData.cat_stim_paths; //this returns undefined cat_stim_paths = cat_stim_paths.slice(start_idx, end_idx); //and then this returns an error because undefined cat_stim = jatos.studySessionData.cat_stim; cat_stim = cat_stim.slice(start_idx, end_idx); /* LOGIC THAT USES SESSION DATA (ALL JSPSYCH STUFF) */ /* start the experiment */ jatos.onLoad(() => { jatos.addAbortButton({ action: revert_batch }); jsPsych.run(timeline); }); </script>
For context, cat_stim
is a list of timeline objects and cat_stim_paths
is the array of paths for pre-loading (which I can verify in the console has been saved to the study session data object).
Thanks for the help!
Comments
Hi,
Yes, you can only access the study session after the jatos.onLoad function got called. How about you wrap everything with jatos.onLoad?
Best,
Kristian
Wow thank you so much Kristian!