surveyjs 验证未命中后端,开发工具网络选项卡中没有任何内容,文本框正常工作

surveyjs validation not hitting backend, nothing in dev tools network tab, text box works as normal

提问人:Brént Russęll 提问时间:7/18/2023 更新时间:7/18/2023 访问量:40

问:

以下是从我的 surveyjs 实现中获取的 json。在 10 页的调查中,除了下面显示的第 1 页外,一切正常。它加载良好,就像文本框一样,但是,它应该检查 http://www.example.com/check_application_code.php onblur 或人们何时单击下一个(我不在乎哪个)。我在控制台中没有看到错误,在网络选项卡中没有看到任何事情发生,当我在服务器上查看访问日志时,单击下一步时没有击中后端。

{
  "showQuestionNumbers": false,
  "checkErrorsMode": "onValueChanged",
  "pages": [
    {
      "name": "page1",
      "description": "Application Code",
      "elements": [
        {
          "type": "text",
          "name": "applicationCode",
          "title": "You need an application code to apply. Please enter your code below.",
          "isRequired": true,
          "validators": [
            {
              "type": "async",
              "text": "Invalid application code.",
              "url": "http://www.example.com/check_application_code.php",
              "dataType": "json",
              "method": "get",
              "asyncValidators": [
                {
                  "name": "backendValidation",
                  "func": "function(params) { return params.hasOwnProperty('valid') && params.valid === true; }"
                }
              ]
            }
          ]
        }
      ]
    },

以下是我用来加载 surveyjs 的 JS 脚本:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/inputmask.js"></script>
<script src="https://unpkg.com/nouislider/dist/nouislider.min.js"></script>
<link href="https://unpkg.com/survey-jquery/defaultV2.min.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://unpkg.com/survey-jquery/survey.jquery.min.js"></script>
<script src="https://unpkg.com/[email protected]/surveyjs-widgets.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/nouislider/dist/nouislider.min.css" />

JS 文本框的屏幕截图:SurveyJS textbox

后端确实有效。当我使用浏览器调用它时,它会显示在日志中并回复以下内容:

{"valid":false,"message":"No application code provided."}

不知道下一步该去哪里让它工作。任何帮助都是值得赞赏的

JavaScript AJAX 验证 调查JS

评论


答:

0赞 Brént Russęll 7/18/2023 #1

我做错了。您需要创建一个 javascript 函数来检查后端。据我所知,它没有内置于 surveyjs 中。这里有一个例子:https://surveyjs.io/form-library/examples/javascript-async-form-validation/jquery