Angular - JSON 中位置 1 的意外标记 x - 响应以 [
Angular - Unexpected token x in JSON at position 1 - response starts with [
我正在向我的服务器发送 $http
请求,我的响应格式是 [SERVICE_NAME = XYZ][PRAMA = YZR]
,请求完成后我收到此错误:
SyntexError: Unexpected token S in JSON position 1 at Object.parse
我认为这是因为响应以 [
开头,有人遇到并解决了这个问题吗?
这是我的 $http
请求:
var promise = $http({method : 'GET', url : baseUrl, headers:{"Content-Type":text/html}, params:queryParams}).then(function(response){
console.log(response);
retuen response.data;
}, function(error){
console.log(error)
})
return promise;
};
我知道我的 response
不是 vaild JSON
,我仍然需要解析它。
谢谢。
您需要从服务器端进行配置以将数据发送为 text/plain
这段代码可以拯救你。
response.setContentType("text/plain");
您在 test/html
中有拼写错误
var promise = $http({method : 'GET', url : baseUrl, headers:{"Content-Type":text/html}, params:queryParams}).then(function(response){
console.log(response);
retuen response.data;
}, function(error){
console.log(error)
})
return promise;
};
不要 return 您的回复 application/json
内容类型。
如果您的响应有 Content-Type
header 且值为 application/json
,Angular 将自动解析 JSON。
Return 您的回复 text/plain
内容类型可以避免这种情况。
另一种选择是手动设置响应转换函数,例如:
$http({
url: '...',
method: 'GET',
transformResponse: [function (response) {
// Data response is plain text at this point
// So just return it, or do your parsing here
return data;
}]
});
我不确定,但为什么你的 header 是这样的:headers:{"Content-Type":text/html}
,它看起来不对。为什么不 headers:{"Content-Type": 'text/html'}
此外,Content-type header 表示仅对您的内容进行编码,而不是对答案进行编码,请尝试添加 "Accept" header:
headers:{'Content-Type': 'text/html', 'Accept': 'text/plain'}
这是协议的官方 W3C 规范和 headers https://www.w3.org/Protocols/rfc2616/rfc2616-sec14
我正在向我的服务器发送 $http
请求,我的响应格式是 [SERVICE_NAME = XYZ][PRAMA = YZR]
,请求完成后我收到此错误:
SyntexError: Unexpected token S in JSON position 1 at Object.parse
我认为这是因为响应以 [
开头,有人遇到并解决了这个问题吗?
这是我的 $http
请求:
var promise = $http({method : 'GET', url : baseUrl, headers:{"Content-Type":text/html}, params:queryParams}).then(function(response){
console.log(response);
retuen response.data;
}, function(error){
console.log(error)
})
return promise;
};
我知道我的 response
不是 vaild JSON
,我仍然需要解析它。
谢谢。
您需要从服务器端进行配置以将数据发送为 text/plain
这段代码可以拯救你。
response.setContentType("text/plain");
您在 test/html
中有拼写错误 var promise = $http({method : 'GET', url : baseUrl, headers:{"Content-Type":text/html}, params:queryParams}).then(function(response){
console.log(response);
retuen response.data;
}, function(error){
console.log(error)
})
return promise;
};
不要 return 您的回复 application/json
内容类型。
如果您的响应有 Content-Type
header 且值为 application/json
,Angular 将自动解析 JSON。
Return 您的回复 text/plain
内容类型可以避免这种情况。
另一种选择是手动设置响应转换函数,例如:
$http({
url: '...',
method: 'GET',
transformResponse: [function (response) {
// Data response is plain text at this point
// So just return it, or do your parsing here
return data;
}]
});
我不确定,但为什么你的 header 是这样的:headers:{"Content-Type":text/html}
,它看起来不对。为什么不 headers:{"Content-Type": 'text/html'}
此外,Content-type header 表示仅对您的内容进行编码,而不是对答案进行编码,请尝试添加 "Accept" header:
headers:{'Content-Type': 'text/html', 'Accept': 'text/plain'}
这是协议的官方 W3C 规范和 headers https://www.w3.org/Protocols/rfc2616/rfc2616-sec14