输入框写入尖括号传输提示有危险字符;
解决方案:
1、添加输入框限制,不可填写与html标签类似类型的数据,例如<a等
2、将输入框中的数据转义成可以传输的数据写入数据库
本次处理用的是第二种方案:
Ext.define('Override.Ext.form.Basic', {
override: 'Ext.form.Basic',
/**
* 重写目的:解决form中提交的时候由于<出现传输错误问题
*/
getValues: function (asString, dirtyOnly, includeEmptyText, useDataValues, isSubmitting) {
var values = {},
fields = this.getFields().items,
fLen = fields.length,
isArray = Ext.isArray,
dataMethod = useDataValues ? 'getModelData' : 'getSubmitData',
field, data, val, bucket, name, f;
for (f = 0; f < fLen; f++) {
field = fields[f];
if (!dirtyOnly || field.isDirty()) {
data = field[dataMethod](includeEmptyText, isSubmitting);
if (Ext.isObject(data)) {
for (name in data) {
if (data.hasOwnProperty(name)) {
val = data[name];
if (includeEmptyText && val === '') {
val = field.emptyText || '';
}
if (!field.isRadio) {
if (values.hasOwnProperty(name)) {
bucket = values[name];
if (!isArray(bucket)) {
bucket = values[name] = [bucket];
}
if (isArray(val)) {
values[name] = bucket.concat(val);
} else {
bucket.push(val);
}
} else {
if (typeof val == 'string') {
//这么写的原因是:使用转义函数escape会将其他的数据全部转义掉
values[name] = val.replace(RegExp("<", "g"), '%3C');
}
else {
values[name] = val;
}
}
} else {
values[name] = values[name] || val;
}
}
}
}
}
}
if (asString) {
values = Ext.Object.toQueryString(values);
}
return values;
}
});
Ext.define('Override.Ext.grid.column.Column', {
override: 'Ext.grid.column.Column',
/**
* 重写目的:结局<界面显示问题
*/
defaultRenderer: function (value) {
return unescape(value).replace('<','<');//使用 < 对尖括号进行替换,是为了让数据在grid正常显示
}
});
对数据进行整体转换方法:
查看界面:
record.data = Ext.JSON.decode(unescape(JSON.stringify(rrecord.data)).replace(RegExp("<", "g"), '<'));
form.loadRecord(record);
编辑界面
record.data = Ext.JSON.decode(unescape(JSON.stringify(rrecord.data)));
form.loadRecord(record);