gpt4 book ai didi

Javascript 验证 - 检查字符串是否是正确的对象

转载 作者:行者123 更新时间:2023-12-02 23:11:02 25 4
gpt4 key购买 nike

我有一个文本区域,我需要在其中放置一个这样的对象

[{
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 数据库中,然后使用 php (laravel) 将其打印在 javascript 对象中

@if(!empty($useridobj))
try {
useridobj = {!! $useridobj !!};
if(typeof useridobj != 'object'){
useridobj = '';
}
} catch(err) {
useridobj = ''
}
@endif

如果我在这个文本区域中放置了正确的对象,一切都会正常。但如果我犯了这样的错误

[{name:'digitrust',para]

控制台返回错误。

所以我想首先在 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;
}

这不起作用。有人可以帮助我吗?

谢谢你

最佳答案

也许您应该在服务器端进行验证,上面示例中的evalFunction存在一些安全问题,请参阅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>

关于Javascript 验证 - 检查字符串是否是正确的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com