javascript - Angular js 验证来自服务器的 JSON

标签 javascript json angularjs

据我了解,Angular http 有 2 个检查“成功”和“错误”。这取决于是否连接到服务 - 所以我手头有它,这是我的第一次检查。

我遇到的问题是 JSON 中的数据有一个成功状态,它会通知我它包含的数据或从我的表单收到的数据是否有任何问题,在这种情况下,我将出现一个错误对象打开并显示给用户。

我需要检查成功的值(value),但是检查成功的最佳位置在哪里?

我应该在 Controller 中执行此操作吗?

如果数据不正确,页面就没有其他事情可做,因此这实际上是检索数据后需要完成的第一件事。

这是基本的 Controller 布局

 app.controller("dataCtrl", function ($scope, $http) {

$http.post('/getdata').success(function (data) {

    $scope.businessData = data;

    // Should I then be checking businessData.success at this level?

}).error(function () {
    alert("Problem");
});

});

最佳答案

你可以这样写:

$http.post('/getdata').success(function (data) {
  if (validate(data)) {
    $scope.businessData = data;
  } else {
    $scop.buisnessDataError = {msg: 'smth bad happend'};
  }
}).error(function () {..})

否则,您可以以类似 Promise 的风格编写验证器,然后以这种方式链式 Promise:

$http.post('/getdata').then(function (res) {
   return validator(null, res.data);
}, function (err) { 
   return validator({msg: 'error'})
}).then(function (data) {
   //proceed your data
}, function (err) {
  alert(err.msg);
});

验证器在哪里:

var varlidator = function (err, data) {
  return $q(function (resolve, reject) {
   if (/*data is not valid*/ || err) {
     reject(err);
   } else {
     resolve(data);
   }
  });
}

$q 是 Promises 的标准 Angular 实现

关于javascript - Angular js 验证来自服务器的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194025/

相关文章:

javascript - this.async() 在 JavaScript 中做了什么

javascript - 传播运算符与属性访问器( setter/getter )的问题

C# 以数组形式返回 json 结果

javascript - 无法读取未定义的属性 '$apply'

javascript - AngularJS 的条件语句

javascript - 如何更改开盘和收盘详情/摘要的图片?

javascript - 如何创建新事件

javascript - 从javascript中删除双引号

json - 使用 NSURLSession 下载 JSON 不会返回任何数据

javascript - AngularJS : Adding variable into a chain of promises