请检查下面的代码,这有效
$('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 作为函数的模式传递。
有点不清楚你哪里出了问题,但这也许会帮助你走上正确的轨道。
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>