Javascript $scope.someVariable可以';别动

Javascript $scope.someVariable可以';别动,javascript,html,angularjs,json,Javascript,Html,Angularjs,Json,我是AngularJS的新手,所以我的错误可能在代码中的任何地方,我都找不到。我正在使用$httpget方法来检索位于某个服务器/页面中的数据。在检索到该数据(即JSON)后,我希望使用该字符串来正确检索数据,如name:number:等等。但问题是,一旦我将数据放入$scope.listOfCompanyUsers中,我就无法触摸它。如果我尝试$scope.listOfCompanyUsers.slice(..)或者在该对象上尝试任何其他字符串函数,我的整个网页都会崩溃。I“alert()”读

我是AngularJS的新手,所以我的错误可能在代码中的任何地方,我都找不到。我正在使用
$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”,
“姓名”:“约翰·多伊”
}
]
编辑服务器端代码,以删除:


然后呼叫就会工作。

非常奇怪的服务器响应,因此可能的解决方案是:

  • 将服务器响应更改为标准JSON,而不使用不需要的
  • 如果您无法更改响应,请使用JS中的正则表达式删除响应中不需要的部分。工作示例如何做到这一点:
  • 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>