我是AngularJS的新手,所以我的错误可能出现在我的代码中,我无法找到它。我使用$HTTP GET
方法检索位于某个服务器/页面中的数据。检索完该数据(即JSON)之后,我想使用该字符串来正确检索数据,例如name:number:等等。但事情是,一旦我将这些数据放入$scope.listOfCompanyUsers
我无法触及它。如果我尝试$scope.listOfCompanyUsers.slice(..)
或者如果我在该对象上尝试任何其他字符串函数,我的整个网页都会崩溃。我{" alert()
"' $scope.listOfCompanyUsers
,结果是:
<pre>[
{
"admin": true,
"id": 123,
"username": "someName",
"last_name": "someLastName",
"name": "John Doe"
}
]</pre><br>
我想要做的是从该字符串中删除pre和br标签,这样我就可以使用一个纯JSON字符串,但我再次使用$scope.listOfCompanyUsers
上的任何函数都会崩溃我的网站。我该怎么办?我尝试了var someOtherVariable = $scope.listOfCompanyUsers
,但该变量以后没有用。我添加了部分代码,因为我的错误可能在其他地方。
控制器:
$http({
method: 'GET',
url: '/someURL'
}).then(function successCallback(response) {
$scope.listOfCompanyUsers = response.data;
},
function errorCallback(response) {
alert(response.status);
});
稍后在同一个控制器上:
.
.
$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
}
};
我现在的目标是拥有一个var objectOfUsers = [{admin: true, id:123, username: "name", last_name: "test", name: "something"}, {next user.}, .]
,但因为我无法触及$scope.listOfCompanyUsers
我被卡住了。
答案 0 :(得分:1)
问题是服务器正在为不应该在那里的响应添加一些额外的标签:
<pre>[
{
"admin": true,
"id": 123,
"username": "someName",
"last_name": "someLastName",
"name": "John Doe"
}
]</pre><br>
修改服务器端代码,删除:<pre>
和</pre><br>
。
然后通话即可。
答案 1 :(得分:0)
您的回复是字符串吗?如果您的响应有HTML标记,那么这是无效的JS对象格式。看起来你有一个带有一个对象的Javascript数组,被一些HTML标签包围。
因此,您将无法使用对象引用表示法(String.prototype.replace
)访问其中的任何内容,直到您将其视为字符串并使用JSON.parse
并替换标记,然后执行剩余字符串上的{{1}}将其转换为对象
答案 2 :(得分:0)
非常奇怪的服务器响应,所以可能的解决方案是:
<pre>
var response='<pre>[{"admin": true, "id": 123, "username": "someName","last_name": "someLastName", "name": "John Doe"}]</pre><br>';
var goodResponse=response.match(/>([^<]*)</)[1];//remove not wanted signs
var parsedGoodResonse=JSON.parse(goodResponse);
console.log(parsedGoodResonse);//here we have parse js array
&#13;
在parsedGoodResonse
中你有一个可以触及的对象&#34;正是你所需要的。
答案 3 :(得分:-1)
额外标签的问题不在您的代码上,而是在服务器端。您应该检查服务器上的代码并找到这些额外标签的原因。它们不能存在,因为它们使响应成为无效的JSON。