Javascript $scope.someVariable可以';别动
我是AngularJS的新手,所以我的错误可能在代码中的任何地方,我都找不到。我正在使用Javascript $scope.someVariable可以';别动,javascript,html,angularjs,json,Javascript,Html,Angularjs,Json,我是AngularJS的新手,所以我的错误可能在代码中的任何地方,我都找不到。我正在使用$httpget方法来检索位于某个服务器/页面中的数据。在检索到该数据(即JSON)后,我希望使用该字符串来正确检索数据,如name:number:等等。但问题是,一旦我将数据放入$scope.listOfCompanyUsers中,我就无法触摸它。如果我尝试$scope.listOfCompanyUsers.slice(..)或者在该对象上尝试任何其他字符串函数,我的整个网页都会崩溃。I“alert()”读
$httpget
方法来检索位于某个服务器/页面中的数据。在检索到该数据(即JSON)后,我希望使用该字符串来正确检索数据,如name:number:等等。但问题是,一旦我将数据放入$scope.listOfCompanyUsers
中,我就无法触摸它。如果我尝试$scope.listOfCompanyUsers.slice(..)
或者在该对象上尝试任何其他字符串函数,我的整个网页都会崩溃。I“alert()
”读取$scope.listOfCompanyUsers
,结果是:
<pre>[
{
"admin": true,
"id": 123,
"username": "someName",
"last_name": "someLastName",
"name": "John Doe"
}
]</pre><br>
稍后在同一控制器上:
.
.
$scope.someFunction = function () {
.
.
else {
alert("Maximum of 9 other passengers!");
alert($scope.listOfCompanyUsers);
// In this alert I could see the $scope.listOfCompanyUsers as mentioned above
}
};
<pre>[
{
"admin": true,
"id": 123,
"username": "someName",
"last_name": "someLastName",
"name": "John Doe"
}
]</pre><br>
我现在的目标是有一个var objectOfUsers=
[{admin:true,id:123,username:“name”,last_name:“test”,name:“something”},{next user.},.]
但是因为我不能触摸$scope.listOfCompanyUsers
我被卡住了。你的响应是字符串吗?如果您的响应有HTML标记,那么这不是有效的JS对象格式。看起来您有一个包含一个对象的Javascript数组,由一些HTML标记包围
因此,在将其视为字符串并使用
string.prototype.replace
和替换标记,然后对剩余字符串执行JSON.parse
以将其转换为对象之前,您将无法使用对象引用符号(
)访问其中的任何内容?如果您的响应有HTML标记,那么这不是有效的JS对象格式。看起来您有一个包含一个对象的Javascript数组,由一些HTML标记包围
因此,在您将其视为字符串并使用
string.prototype.replace
和替换标记之前,您将无法使用对象引用符号(
)访问其中的任何内容,然后对剩余的字符串执行JSON.parse
,将其转换为一个对象问题是服务器正在向响应中添加一些不应该存在的额外标记:
[
{
“管理员”:是的,
“id”:123,
“用户名”:“someName”,
“姓氏”:“someLastName”,
“姓名”:“约翰·多伊”
}
]
编辑服务器端代码,以删除:
和
然后调用就会工作。问题是服务器正在向响应中添加一些不应该在响应中的额外标记:
[
{
“管理员”:是的,
“id”:123,
“用户名”:“someName”,
“姓氏”:“someLastName”,
“姓名”:“约翰·多伊”
}
]
编辑服务器端代码,以删除:
和
然后呼叫就会工作。非常奇怪的服务器响应,因此可能的解决方案是:
var response='[{“admin”:true,“id”:123,“username”:“someName”,“last_name”:“someLastName”,“name”:“John Doe”}]
;
var goodResponse=response.match(/>([^非常奇怪的服务器响应,因此可能的解决方案是:
将服务器响应更改为标准JSON,而不使用不需要的
如果无法更改响应,请使用JS中的正则表达式删除响应中不需要的部分。工作示例如何做到:
var response='[{“admin”:true,“id”:123,“username”:“someName”,“last_name”:“someLastName”,“name”:“John Doe”}]
;
var goodResponse=response.match(/>([^额外标记的问题不在代码上,而是在服务器端。您应该检查服务器上的代码并找到这些额外标记的原因。它们不在那里,因为它们使响应成为无效的JSON。额外标记的问题不在代码上,而是在服务器端。您应该检查代码在服务器上找到这些额外标记的原因。它们不在那里,因为它们使响应成为无效的JSON。我发出警报(typeof$scope.listOfCompanyUsers);它说stringI发出警报(typeof$scope.listOfCompanyUsers);它说stringI而不是警报($scope.listOfCompanyUsers);
,您能为我们提供console.log($scope.listOfCompanyUsers)结果的屏幕截图吗
?它显示的完全相同,我还是会附加一个SS。啊,我明白了。pre
和br
标记实际上是响应的一部分……您有权访问该调用的服务器端吗?是的,它是用python编写的:webapp2.Route('/ListCompanyUsers',Users.ListCompanyUsers)我有访问权限,老实说,我完全不知道服务器端是如何工作的,但如果我想通过$http移动到不同的URL,我被告知要使用这段代码。不过,正如我在回答中所解释的,您必须编辑服务器端代码。而不是警报($scope.listOfCompanyUsers);
,您能为我们提供console.log($scope.listOfCompanyUsers)结果的屏幕截图吗
?它显示的完全相同,我还是会附加一个SS。啊,我明白了。pre
和br
标记实际上是响应的一部分……您有权访问该调用的服务器端吗?是的,它是用python编写的:webapp2.Route('/ListCompanyUsers',Users.ListCompanyUsers)我有访问权限,老实说,我完全不知道服务器端是如何工作的,但如果我想通过$http移动到不同的URL,我被告知要使用这段代码。不过,正如我在回答中所解释的,你必须编辑服务器端代码。是的,实际上在服务器端更改代码是可行的,现在$scope.listOfCompanyUsers是一个json对象。我将“self.response.write(%s
%json.dumps(user\u list,indent=2))”改为“self.response.write(json.dumps(user\u list,indent=2))”@LironIlayev:是的,这很有意义:-)感谢您接受我的请求
<pre>[
{
"admin": true,
"id": 123,
"username": "someName",
"last_name": "someLastName",
"name": "John Doe"
}
]</pre><br>