本平台用于托管和运行基于 Web 的心理学行为实验 (PsychoPy / jsPsych / Lab.js)。
要在本平台运行 PsychoPy 实验,请在 Builder 视图中添加 Code Component (JS):
// 引入JATOS库
jQuery.getScript("jatos.js");
// 手动控制上传 psychoJS._saveResults = 1;
// --- 获取数据并上传 ---
let data = psychoJS._experiment._trialsData;
jatos.submitResultData(data);
// --- 生成 CSV 下载 (防丢失) ---
if (data.length > 0) {
let allKeys = new Set();
data.forEach(row => Object.keys(row).forEach(key => allKeys.add(key)));
let headers = Array.from(allKeys);
let csvContent = headers.join(",") + "\n";
data.forEach(row => {
let rowStr = headers.map(header => {
let val = row[header];
if (val === undefined || val === null) return "";
let strVal = String(val);
if (strVal.includes(",") || strVal.includes("\n") || strVal.includes('"')) {
return `"${strVal.replace(/"/g, '""')}"`;
}
return strVal;
}).join(",");
csvContent += rowStr + "\n";
});
let blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
let link = document.createElement("a");
if (link.download !== undefined) {
let url = URL.createObjectURL(blob);
link.setAttribute("href", url);
let timestamp = new Date().toISOString().replace(/[:.]/g, "-");
link.setAttribute("download", `experiment_data_${timestamp}.csv`);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
jatos.startNextComponent();