如何使用POST请求设置SurveyJS问卷结果?适配Adapt Learning插件需求
使用POST请求设置SurveyJS问卷结果
当然可以用POST请求提交SurveyJS问卷结果!结合你在Adapt Learning中集成的需求,以及你之前用jQuery获取结果的代码风格,我整理了具体的实现方案:
1. 核心POST请求代码
你之前用$.get拉取结果,对应的提交操作可以用$.post或者更灵活的$.ajax来实现,两种写法都给你列出来:
简洁版:用$.post快速提交
// 替换成你的实际SurveyID和accessKey const surveyId = "your-survey-id"; const accessKey = "your-access-key"; const submitUrl = `https://dxsurvey.com/api/MySurveys/postSurveyResult/${surveyId}?accessKey=${accessKey}`; // 构造要提交的进度/问卷数据,字段要和你的SurveyJS问卷配置对应 const progressData = { // 示例:假设你有一个记录进度的字段,以及其他问卷回答 learningProgress: 75, lastCompletedModule: "Module 3", // 其他问卷问题的回答... }; // 发送POST请求 $.post(submitUrl, progressData, function(res) { console.log("进度提交成功!返回数据:", res); }).fail(function(err) { console.error("提交失败,错误信息:", err); });
灵活版:用$.ajax自定义请求配置
如果需要设置请求头、调整数据格式,用$.ajax更方便:
const surveyId = "your-survey-id"; const accessKey = "your-access-key"; const submitUrl = `https://dxsurvey.com/api/MySurveys/postSurveyResult/${surveyId}`; const progressData = { // 你的进度/结果数据 }; $.ajax({ url: submitUrl, type: "POST", data: progressData, dataType: "json", // 可选:如果不想把accessKey放URL里,可以放请求头(看SurveyJS API要求) headers: { // "Authorization": `Bearer ${accessKey}` }, success: function(res) { console.log("提交成功", res); }, error: function(xhr, status, err) { console.error("提交出错:", status, err); } });
2. 适配Adapt Learning的关键提醒
- 数据格式要匹配:你提交的
progressData里的字段名必须和SurveyJS问卷中的问题ID完全一致,不然数据会无法正确存储。比如你要记录学习进度,可以在SurveyJS里加一个数值型的问题,ID设为learningProgress,然后提交对应数值就行。 - 避免前端暴露accessKey:如果Adapt Learning是公开可访问的,直接把accessKey写在前端代码里有泄露风险。最好的方式是通过Adapt Learning的后端服务中转请求,由后端携带accessKey去调用SurveyJS API,前端只需要把进度数据传给Adapt Learning后端。
- 原生JS替代方案:如果Adapt Learning环境里没有jQuery,也可以用原生
fetchAPI提交:
const surveyId = "your-survey-id"; const accessKey = "your-access-key"; const submitUrl = `https://dxsurvey.com/api/MySurveys/postSurveyResult/${surveyId}?accessKey=${accessKey}`; const progressData = { // 你的数据 }; fetch(submitUrl, { method: "POST", body: JSON.stringify(progressData), headers: { "Content-Type": "application/json" } }) .then(res => res.json()) .then(data => console.log("提交成功:", data)) .catch(err => console.error("提交失败:", err));
3. 验证提交结果
提交完之后,你可以用之前的GET请求代码去拉取结果,或者登录SurveyJS的后台查看数据,确认进度是否成功保存。
内容的提问来源于stack exchange,提问作者jasonC
相关产品推荐
相关产品推荐

