Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Angularjs JSON中位置0处的意外标记u_Angularjs_Json_Local Storage - Fatal编程技术网

Angularjs JSON中位置0处的意外标记u

Angularjs JSON中位置0处的意外标记u,angularjs,json,local-storage,Angularjs,Json,Local Storage,当我尝试将字符串转换为对象时,出现错误“`”: Unexpected token u in JSON at position 0 服务 setUser : function(aUser){ //sauvegarder User localStorage.setItem('User', JSON.stringify(aUser)); }, getUser : function(){ //récuperer User return JS

当我尝试将字符串转换为对象时,出现错误“`”:

Unexpected token u in JSON at position 0
服务

setUser : function(aUser){ 
    //sauvegarder User       
    localStorage.setItem('User', JSON.stringify(aUser));
},

getUser : function(){
    //récuperer User      
    return JSON.parse(localStorage.getItem('User'));
}

首先要做的是查看您试图解析的内容。我猜您会发现它是
“undefined”
,这是无效的JSON。您将获得未定义的
,因为您尚未将任何内容保存到本地存储中的该密钥
undefined
然后被转换为字符串
“undefined”
,该字符串
JSON.parse
无法解析

我通常在本地存储中存储和检索内容,如下所示:

存储(与您的一样):

检索(这是不同的):


这样,我总是在解析有效的内容。

您会遇到此错误,因为您没有以JSON字符串的形式返回响应,而您的浏览器希望解析JSON字符串。因此,它获取响应字符串的第一个字母并抛出一个错误

您可以通过转到浏览器开发工具的“网络”选项卡并查看响应来验证它

要解决此问题,可以在http请求中使用以下代码

var promiz = $http.post(url, data, {
      transformRequest: angular.identity,
      transformResponse: angular.identity,
      headers: {
        'Content-Type': undefined
      }
    });

希望这有帮助

我也犯了同样的错误。问题是我从HTTP Get请求得到的响应不是JSON格式,而是纯文本

this.BASE\u URL=“我的URL”;
公共文件(){
返回this.http.get(this.BASE\u URL)
.map((res:Response)=>res.json())
.catch((error:any)=>Observable.throw(error.json().error | |“服务器错误”);
}
因此,JSON解析器抛出了一个错误

当我将其映射为纯文本时,如下所示:

.map((res:Response)=>res.text());

它可以工作。

请显示您试图解析的字符串。您的http调用中可能有数据类型:“json”或响应类型:“json”。而且似乎无法解析它(因为它不是有效的JSON格式)。尝试删除它们。最好的解决方案,在我从angularJS 1.2->1.3升级时效果很好。angularJS 6升级后,您无需再映射到JSON。“从HttpModule和Http服务切换到HttpClientModule和HttpClient服务。HttpClient简化了默认的人体工程学(不再需要映射到json),现在支持键入的返回值和拦截器。请阅读angular.io上的更多信息”
thing = JSON.parse(localStorage.getItem("key") || "null");
if (!thing) {
    // There wasn't one, do whatever is appropriate
}
var promiz = $http.post(url, data, {
      transformRequest: angular.identity,
      transformResponse: angular.identity,
      headers: {
        'Content-Type': undefined
      }
    });