Jquery函数动态选项

问题描述 投票:0回答:1

请检查下面的代码,这有效

 $('form').jsonForm({
     'schema': { 'message': { 'type': 'string', 'title': 'Message' }, 'author': { 'type': 'object', 'title': 'Author', 'properties': { 'name': { 'type': 'string', 'title': 'Name' }, 'gender': { 'type': 'string', 'title': 'Gender', 'enum': ['male', 'female', 'alien'] }, 'magic': { 'type': 'integer', 'title': 'Magic number', 'default': 42 } } } }
 });

我想动态更改选项,我可以从ajax获取这些选项,但是当我尝试使用ajax成功时,它会抛出js错误

"Uncaught TypeError: Cannot read properties of undefined (reading 'properties')"
,如果我直接传递它,它可以工作,但是当我尝试传递时来自变量的选项不起作用。

var fm = "'schema': {
  "message":{
    "type":"string",
    "title":"Message"
  },
  "author":{
    "type":"object",
    "title":"Author",
    "properties":{
       "name":{
          "type":"string",
          "title":"Name"
       },
       "gender":{
         "type":"string",
         "title":"Gender",
         "enum":[
           "male",
           "female",
           "alien"
         ]
       },
       "magic":{
          "type":"integer",
          "title":"Magic number",
          "default":42
       }
    }
  }
}";

$('form').jsonForm({fm});

如有任何帮助,我们将不胜感激。预先感谢

请检查ajax代码

  $("#ddlDocType").change(function () {
                var docId = parseInt($(this).val());
                var obj = {};
                obj.docId = docId;


                if (!isNaN(docId)) {
                  

                    $.ajax({
                        url: "fillForm.aspx/GetDocTypeForm",
                        type: 'POST',
                        dataType: 'json',
                        data: JSON.stringify(obj),
                        contentType: "application/json; charset=utf-8",
                        success: function (r) {
                            var frm = JSON.parse(r.d);
                            console.log(frm);


                            $('form').jsonForm({
                                frm
                            })

                            //$('#form1').html(r.d)
                        },
                        error: function () {
                            alert('Error!');
                        }
                    });
                }
            });

编辑

https://codepen.io/rajputamitd/pen/XWObjXB

它是表单的一个工作示例,现在我如何将 json 作为函数的模式传递。

javascript jquery jquery-plugins
1个回答
0
投票

有点不清楚你哪里出了问题,但这也许会帮助你走上正确的轨道。

var fm = JSON.parse('{"schema": { "message": { "type": "string", "title": "Message" }, "author": { "type": "object", "title": "Author", "properties": { "name": { "type": "string", "title": "Name" }, "gender": { "type": "string", "title": "Gender", "enum": ["male", "female", "alien"] }, "magic": { "type": "integer", "title": "Magic number", "default": 42 } } } }}');

$('form').jsonForm(fm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/underscore-umd-min.js"></script>
<script src="
https://cdn.jsdelivr.net/npm/[email protected]/lib/jsonform.min.js
"></script>
<link href="
https://cdn.jsdelivr.net/npm/[email protected]/deps/opt/bootstrap.min.css
" rel="stylesheet">
<form>
</form>

© www.soinside.com 2019 - 2024. All rights reserved.