Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJSON解析(ajax)_Ajax_Json_Angularjs - Fatal编程技术网

AngularJSON解析(ajax)

AngularJSON解析(ajax),ajax,json,angularjs,Ajax,Json,Angularjs,我一直试图提出一个ajax请求,但似乎有一个问题。当我的json属性名在“(比如{“name”:value”})中时,它可以工作,但当属性名不在时它就不工作了。我有以下例外 SyntaxError: Unexpected token s at Object.parse (native) at pb (http://localhost:8080/angularjs/lib/angular.min.js:12:472) at Vc.d.defaults.transformResponse (http

我一直试图提出一个ajax请求,但似乎有一个问题。当我的json属性名在“(比如{“name”:value”})中时,它可以工作,但当属性名不在时它就不工作了。我有以下例外

SyntaxError: Unexpected token s
at Object.parse (native)
at pb (http://localhost:8080/angularjs/lib/angular.min.js:12:472)
at Vc.d.defaults.transformResponse (http://localhost:8080/angularjs/lib/angular.min.js:92:314)
at http://localhost:8080/angularjs/lib/angular.min.js:92:127
at Array.forEach (native)
at n (http://localhost:8080/angularjs/lib/angular.min.js:6:192)
at Qb (http://localhost:8080/angularjs/lib/angular.min.js:92:109)
at c (http://localhost:8080/angularjs/lib/angular.min.js:93:295)
at h (http://localhost:8080/angularjs/lib/angular.min.js:77:437)
at http://localhost:8080/angularjs/lib/angular.min.js:78:169 
这是我的密码:

index.html:

<!doctype html>
<html ng-app>
<head>
<script src="lib/angular.min.js"></script>
<script src="js/indexApp.js"></script>
</head>
<body>
    <div>
        <div ng-controller="AjaxController">
            {{users.data}}
        </div>
    </div>
</body>
</html>
})

data.json

{
    success : "true",
    data: [{name:"val"}]
}
必须在
中包装属性名称。这是指定有效传输JSON的唯一方法,它比可执行JavaScript上下文中的对象表示法更严格。如果尝试使用更宽松的表示法,任何JSON解析器都将失败


另请参见这一点是由谁规定的。

即使我也有类似的问题,解决方案是,您的字符串数据应为JSON.parseangular.fromJson的特定格式

例如:

var myString = '{"name":"nomad"}';
console.log(JSON.parse(myString));


控制台输出是:Object{name:“nomad”}

在我的例子中,它返回了以下错误:

SyntaxError:意外标记'

at Object.parse(本机)

在fromJson ()

所以我们发现angular内部发生的情况如下:

JSON.parse("{'error': 'message'}"); // error
实际上,它返回了一个解析器错误,因为JSON应该使用
”包装字符串

因此,我们刚刚修复了服务器响应,以符合以下要求:


我也犯了同样的错误。其中一个名字是这样一个空字符串。
{“firstName”:“,
“lastName”:“Doe”}

编辑:此错误也可能意味着json文件中存在一些语法错误。例如,注释掉json文件中的某些内容或在分隔两个键值对的逗号之间不提供空格也会引发相同的错误。非常初级的错误认为这会帮助别人

@Ezekiel Victor你是如何包装属性名称的???@Despertaweb你是什么意思?用双引号括起属性名称;e、 g.
“name”
而不是
name
。如果您使用任何JSON序列化程序,例如
JSON.stringify(…)
或PHP
JSON\u encode(…)
,它将正确地为您执行此操作。
JSON.parse("{'error': 'message'}"); // error
JSON.parse('{"error": "message"}'); // works!