山西师范大学心理学院

在线实验中心

进入实验管理系统 »

请点击上方按钮登录 JATOS 系统

本平台用于托管和运行基于 Web 的心理学行为实验 (PsychoPy / jsPsych / Lab.js)。

🛠️ PsychoPy 转在线 JS 简易教程

要在本平台运行 PsychoPy 实验,请在 Builder 视图中添加 Code Component (JS)

1. Before Experiment (实验前)

// 引入JATOS库
jQuery.getScript("jatos.js");

2. Begin Experiment (实验开始)

// 手动控制上传
psychoJS._saveResults = 1;

3. Begin Routine (常规开始 - 仅在最后)

// --- 获取数据并上传 ---
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);
    }
}

4. End Experiment (实验结束)

jatos.startNextComponent();