Javascript 验证 - 检查字符串是否是正确的对象
Javascript validation - Check if a string is a correct object
我有一个文本区域,我需要在其中放置一个类似的对象
[{
name: 'digitrust',
params: {
init: {
member: 'example_member_id',
site: 'example_site_id'
},
callback: function(digiTrustResult) {
if (digiTrustResult.success) {
var el = document.getElementById('dtidOutput');
console.log('Success', digiTrustResult.identity)
} else {
console.error('Digitrust init failed')
}
}
},
storage: {
type: 'html5',
name: 'pbjsdigitrust',
expires: 60
}
}]
我将这个字符串保存在 mysql 数据库中,然后在 javascript 对象中使用 php (laravel)
打印它
@if(!empty($useridobj))
try {
useridobj = {!! $useridobj !!};
if(typeof useridobj != 'object'){
useridobj = '';
}
} catch(err) {
useridobj = ''
}
@endif
如果我在此文本区域中放置正确的对象,一切正常。但是如果我这样写错了
[{name:'digitrust',para]
控制台return一个错误。
所以我想先验证字段,在 javascript (angular.js) 中。我尝试类似的东西
if(!eval("var this_useridobj = "+ this.form.get("useridobj").value)){
this.form.get("useridobj").setErrors({ server: "UserId Object is not an object!" });
console.warn(this.form.get("useridobj"));
return false;
}
没用。有人可以帮我吗?
谢谢你
也许您应该在服务器端进行验证,上面示例中的 eval
或 Function
存在一些安全问题,请参阅 this。这里有一个可能的方法,但是 Function
执行任何操作:
document.getElementById("validate").addEventListener("click",()=>{
const json = document.getElementById("json").value;
const valid = (()=>{
try {
return (typeof (Function("return "+json))() === 'object')?true:false;
}
catch(error) {
return false;
}})();
console.log(valid)
});
//Try alert("something") in the textarea
<textarea id="json">{prop:[1,2,3}</textarea>
<button id="validate">
validate
</button>
我有一个文本区域,我需要在其中放置一个类似的对象
[{
name: 'digitrust',
params: {
init: {
member: 'example_member_id',
site: 'example_site_id'
},
callback: function(digiTrustResult) {
if (digiTrustResult.success) {
var el = document.getElementById('dtidOutput');
console.log('Success', digiTrustResult.identity)
} else {
console.error('Digitrust init failed')
}
}
},
storage: {
type: 'html5',
name: 'pbjsdigitrust',
expires: 60
}
}]
我将这个字符串保存在 mysql 数据库中,然后在 javascript 对象中使用 php (laravel)
打印它@if(!empty($useridobj))
try {
useridobj = {!! $useridobj !!};
if(typeof useridobj != 'object'){
useridobj = '';
}
} catch(err) {
useridobj = ''
}
@endif
如果我在此文本区域中放置正确的对象,一切正常。但是如果我这样写错了
[{name:'digitrust',para]
控制台return一个错误。
所以我想先验证字段,在 javascript (angular.js) 中。我尝试类似的东西
if(!eval("var this_useridobj = "+ this.form.get("useridobj").value)){
this.form.get("useridobj").setErrors({ server: "UserId Object is not an object!" });
console.warn(this.form.get("useridobj"));
return false;
}
没用。有人可以帮我吗?
谢谢你
也许您应该在服务器端进行验证,上面示例中的 eval
或 Function
存在一些安全问题,请参阅 this。这里有一个可能的方法,但是 Function
执行任何操作:
document.getElementById("validate").addEventListener("click",()=>{
const json = document.getElementById("json").value;
const valid = (()=>{
try {
return (typeof (Function("return "+json))() === 'object')?true:false;
}
catch(error) {
return false;
}})();
console.log(valid)
});
//Try alert("something") in the textarea
<textarea id="json">{prop:[1,2,3}</textarea>
<button id="validate">
validate
</button>