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

标签 javascript string validation object textarea

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

[{
  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/

相关文章:

javascript - 从字符串中删除图像元素

validation - 如何通过特定字段组合将表限制为 5 条记录

c# - 在 ASP.NET 中禁用 JavaScript 时如何处理验证

javascript - 在 jQuery 中使用动态更新的数据属性

javascript - 使用 jquery 从 html <a> 元素获取数据集项

javascript - 从 MVC 项目中的操作返回的 HTML 文件中的脚本路径不正确

c++ - I/O 流字符串操作(正确的 Cin/cout 运算符 <</>>)

python - 如何通过删除python中的重复项进行压缩?

Jquery - 验证表单上的时间值 - 正确的方法?

javascript - 如何使 X 轴上的 NVD3 discreteBarChart 标签适应标签的宽度或数量?