美元http.获取返回格式错误的数据
$http.get returning malformed data
我正在学习Angular.js,今天是我学习的第二天。下面是一个简单的函数
var XApp = angular.module("XApp", ['ngResource']);
XApp.controller('MenuParentController', function ($scope, $http) {
$http.get('api/menu?type=json').success(function (data) {
console.log('Inside MenuParentController ' + JSON.parse(data));
$scope.parentItems = JSON.parse(data);
});
})
console.log的输出如下:
Inside MenuParentController [{"NodeId":261,"ParentId":9,"NodeName":"Clothing"},{"NodeId":262,"ParentId":9,"NodeName":"Jewellery"},{"NodeId":263,"ParentId":9,"NodeName":"Bags"},{"NodeId":12,"ParentId":1,"NodeName":"Home Décor"},{"NodeId":10,"ParentId":1,"NodeName":"Stationery & Office Supplies"},{"NodeId":811,"ParentId":1,"NodeName":"Gifts"}]
我得到的错误是:
Error: [ngRepeat:dupes] http://errors.angularjs.org/1.2.14/ngRepeat/dupes?p0=item%20in%20parentItems&p1=string%3Ad
做JSON.parse(data)[0]
给出[
作为输出,这是错误的。应该是{"NodeId":261,"ParentId":9,"NodeName":"Clothing"}
<li data-ng-repeat="item in parentItems"><a href="/{{ item.NodeId }}/{{ item.NodeName }}" title="{{ item.NodeName }}" class="newMenuClass {{item.NodeName | lowercase }}">{{ item.NodeName }}</a></li>
在某种程度上,Angular把JSON对象的每个字符都当作对象的属性来处理。知道为什么吗?编辑:当我使用$。Ajax一切正常
$.ajax({
url: 'api/menu?type=json',
dataType: 'json',
async: false,
success: function (data) {
console.log('Inside MenuParentController ' + data);
$scope.parentItems = JSON.parse(data);
}
});
EDIT 2:
当我点击http://localhost:57086/api/menu?type=json
时,这是我得到的输出
"[{'"NodeId'":261,'"ParentId'":9,'"NodeName'":'"Clothing'"},{'"NodeId'":262,'"ParentId'":9,'"NodeName'":'"Jewellery'"},{'"NodeId'":263,'"ParentId'":9,'"NodeName'":'"Bags'"},{'"NodeId'":12,'"ParentId'":1,'"NodeName'":'"Home Décor'"},{'"NodeId'":10,'"ParentId'":1,'"NodeName'":'"Stationery & Office Supplies'"},{'"NodeId'":811,'"ParentId'":1,'"NodeName'":'"Gifts'"}]"
好吧。
错误是将数据序列化两次,导致包含实际JSON数据的单个字符串。
$.ajax
with dataType: 'json'
在将数据传递给success
回调之前隐式反序列化数据。这就是为什么JSON.parse
调用在第二次反序列化运行时成功了。
相关文章:
- 巨大的数据和PHP错误
- 本地跨原点数据错误
- d3在数据更新时错误地附加了dom元素
- 使用odata 4的jaydata 1.5和保存/更新数据时的错误
- 正在检查ajax响应中的错误数据
- Modx数据包管理器ext-all.js错误
- 尝试使用.ninnerHTMLlog打印数据,获取错误Uncaught TypeError:undefined不是函数
- 加载json时出现Ember.js和Ember数据错误
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- 尝试发布大型JSON数据时出现错误请求错误
- 挖空错误:数据保留未定义
- 未定义 D3 错误数据
- 未捕获的引用错误:数据未在挖空中定义
- jquery .ajax 总是返回错误 - 数据被添加到数据库中
- 类型与未定义相比的错误 - 数据为空
- jQuery ajax json——查看返回的错误数据
- 从模拟端口读取时从Arduino串行接收到的错误数据
- 如何在socket io中向单个客户端发送错误数据包?
- Dropzone JS上传到WCF获取错误数据
- 在收到错误数据后清空剑道UI中的网格