Store Survey Results
Survey results are JSON objects that you can store in your own database. Handle the onComplete
event raised in response to a click on the Complete button to send survey results to your server:
import { Model } from "survey-core";
const surveyJson = { ... };
const survey = new Model(surveyJson);
survey.onComplete.add((survey, options) => {
options.showSaveInProgress();
const dataObj = { postId: surveyPostId, surveyResult: resultAsStr };
const dataStr = JSON.stringify(dataObj);
const headers = new Headers({ "Content-Type": "application/json; charset=utf-8" });
fetch(surveyServiceUrl + "/post/", {
method: "POST",
body: dataStr,
headers: headers
}).then(response => {
if (!response.ok) {
throw new Error("Could not post the survey results");
}
// Display the "Success" message (pass a string value to display a custom message)
options.showSaveSuccess();
// Alternatively, you can clear all messages:
// options.clearSaveMessages();
}).catch(error => {
// Display the "Error" message (pass a string value to display a custom message)
options.showSaveError();
console.log(error);
});
});
The onComplete
event handler only sends survey results in JSON format to your server. The way you store them fully depends on your backend.
If you are running a NodeJS server, you can check survey results before saving them. On the server, create a SurveyModel
and call its clearIncorrectValues(true)
method. This method verifies a survey result JSON object against the survey JSON schema and deletes property values that cannot be assigned to a question (such as choice options unlisted in a choices
array) and property values that do not correspond to any question or calculated value.
// Server-side code for a NodeJS backend
import { Model } from "survey-core";
const surveyJson = { ... };
const survey = new Model(surveyJson);
survey.data = initialSurveyResultJson;
survey.clearIncorrectValues(true);
const correctSurveyResultJson = survey.data;