为什么AngularJSON数据是嵌套的?
我有一个服务返回这个简单的json:为什么AngularJSON数据是嵌套的?,angularjs,json,object,nested,Angularjs,Json,Object,Nested,我有一个服务返回这个简单的json: { "successYN": true, "msg": "Success!", "errors": null } 我有一个控制器: app.controller('formController', function ($http, $httpParamSerializerJQLike) { var frmVM = this frmVM.formData = {} frmVM.frmSubmit = function () { c
{
"successYN": true,
"msg": "Success!",
"errors": null
}
我有一个控制器:
app.controller('formController', function ($http, $httpParamSerializerJQLike) {
var frmVM = this
frmVM.formData = {}
frmVM.frmSubmit = function () {
console.log('form was submitted with: ' + frmVM.formData.name + ' ' + frmVM.formData.superheroAlias)
// post the data to the back end
$http({
method: 'POST',
url: '/contact-post',
data: $httpParamSerializerJQLike(frmVM.formData), // pass in data as strings
headers: { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload)
})
.then(function (data) {
console.log(data);
var innerData = data.data;
console.log(innerData)
console.log(innerData.errors)
console.log(innerData.successYN)
if (!innerData.successYN) {
console.log("Not successful!")
// if not successful, bind errors to error variables
frmVM.errorName = innerData.errors.name;
frmVM.errorSuperhero = innerData.errors.superheroAlias;
} else {
// if successful, bind success message to message
frmVM.message = innerData.msg;
}
});
};
})
我的表单中有控制器作为
语法,一切正常。但是,
我在中看到的数据对象如下所示:
var innerData = data.data;
因此,必须按如下方式访问数据:
var innerData = data.data;
在访问数据之前:
console.log(innerData.successYN)
有人能解释为什么会发生这种情况和/或我做错了什么吗?在参数中,“数据”基本上是响应对象,它包含响应头和响应体。
例如:
如果您需要参数响应,那么为了获得响应数据,您必须调用
var data=response.data
如果您想从响应中获取标题,则必须执行以下操作:
var authorization = response.headers('Authorization');
在.then函数中,您必须传递2个处理程序,1个处理程序用于成功响应(200OK),第2个处理程序用于失败响应(400BAD请求)
所以
在参数中,“数据”基本上是响应对象,它包含响应头和响应体。
例如:
如果您需要参数响应,那么为了获得响应数据,您必须调用
var data=response.data
如果您想从响应中获取标题,则必须执行以下操作:
var authorization = response.headers('Authorization');
在.then函数中,您必须传递2个处理程序,1个处理程序用于成功响应(200OK),第2个处理程序用于失败响应(400BAD请求)
所以
$http
将以下面的格式返回数据,因为这是数据的定义方式
来自服务器的响应是具有以下属性的对象:
1) .config用于生成请求的对象
2) .数据一个字符串或对象,承载来自
服务器
3) .headers用于获取标题信息的函数
4) .status定义HTTP状态的数字
5) .statusText定义HTTP状态的字符串
$http
将以下面的格式返回数据,因为这是数据的定义方式
来自服务器的响应是具有以下属性的对象:
1) .config用于生成请求的对象
2) .数据一个字符串或对象,承载来自
服务器
3) .headers用于获取标题信息的函数
4) .status定义HTTP状态的数字
5) .statusText定义HTTP状态的字符串
你没有做错什么。这是来自AngularJS中http请求生成器的响应。它添加了一些响应头、有关请求的信息以及从服务器检索的
数据。它将数据存储在一个data
对象中,您可以从JSON文件访问JSON对象键。谢谢,您应该将此作为一个答案,因为它最好地解释了正在发生的事情。您没有做错什么。这是来自AngularJS中http请求生成器的响应。它添加了一些响应头、有关请求的信息以及从服务器检索的数据。它将数据存储在一个data
对象中,您可以从JSON文件访问JSON对象键。谢谢,您应该将此作为一个答案,因为它最好地解释了正在发生的事情。谢谢您的回复。但是我看到过代码做过这样的事情.success(函数(数据){if(!data.success){
。我为什么要做数据。数据。成功
?兄弟,请看更新。你必须这样做。如果你有任何问题,请告诉我。不鼓励成功,请看下面的链接谢谢,我想上面@C0dekid的评论解释得最好。我在后端使用Nancy,它正在创建一个响应object带有标题等,数据嵌入到该对象的较低位置。下面的示例使用PHPecho json_encode($data);
,我认为它只返回一个字符串。但是,我将。然后(function(data){
改为。然后(function(response){
现在这很有意义,我可以接受。谢谢你的回复。但是我看到代码做了这样的事情.success(函数(数据){if(!data.success){
。我为什么要做数据。数据。成功
?兄弟,请看更新。你必须这样做。如果你有任何问题,请告诉我。不鼓励成功,请看下面的链接谢谢,我想上面@C0dekid的评论解释得最好。我在后端使用Nancy,它正在创建一个响应obje我下面的例子使用PHPecho json_encode($data);
,我认为它只是返回一个字符串。但是,我将。然后(函数(数据){
改为。然后(函数(响应){
,现在它是有意义的,我可以接受它。