随机误差 "Unexpected token in JSON"
Random error "Unexpected token in JSON"
我正在使用 AngularJS 开发网站,我在 API 中进行多项选择以列出类似的产品,但我无法列出这些项目,因为在某些情况下,JSON returns: SyntaxError: Unexpected token in JSON at position 2512.我的代码是:
$timeout(function() {
console.log(id_filtroParecido);
Conecta('get','getProdutosFiltrados', id_filtroParecido).then(function(val) {
vm.respostaListaParecidos = val;
});
}, 100);
在上面的代码中,函数 Conecta 在数据库中进行搜索,return搜索 JSON。但它不可预测,因为它有时会起作用,但有时会失败。
这里是 JSON 我收到并且工作正常的示例:
[{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
这里有一个 JSON 的例子,有时 return 错误,有时却没有:
[{"id_produto":"6","nome_produto":"HP G42-214BR","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição do note HP</p>","informacao_produto":"<p>Informações do note JP</p>","tags_produto":"tag1, tag2, tag3","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"6-hp-g42-214br","imagem_principal":"87c2ee41b5b8fc13db9a3c2db655667b.png","tamanho":[{"id_produto_tamanho":"54","nome_produto_tamanho":"1- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"352","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"9","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Ou em 10x de R0.00","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
还有一个 JSON 总是 return 错误的例子:
[{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
Obs:我在这里使用相同的产品,但这与 returning
的产品无关
这是我用来连接 Angular 和 PHP 的工厂代码:
.factory('Conecta', ['$timeout','$q','AppService', function(time, q, Service) {
return function(acao,api,parametro){
var deferred = q.defer();
switch(acao) {
case 'get':
Service.apiGET(api,parametro).then(function(response) {
if(response.status == 200){
deferred.resolve(response.data);
}else{
deferred.resolve(null);
}
}, function (error) {
console.error(error);
});
break;
default:
break;
}
return deferred.promise;
};
}])
有时问题可能在于您 return 不清楚 JSON 正如它在语法规则和浏览器预期的那样,响应的内容类型是 application/json,但是 return 一个字符串,其中包含与 JS 对象非常相似的内容。
JSON
和 JS object
之间的差异非常粗略
JSON: {"param":"value"}
JS object: {param:"value"}
注意键名的引号。但是如果没有失败的 JSON,很难说代码中的真正问题是什么。
你所有的JSON都是正确的。
您可以执行
JSON.parse('{"kk":11}');
在某些 js REPL
(如浏览器控制台)中为每个人检查该事实。
可能的问题:
- 您正在尝试解析 JSON 的一部分,应该先加载所有块。
- 你答错了JSON,但由于某些原因无法抓住问题示例。
我正在使用 AngularJS 开发网站,我在 API 中进行多项选择以列出类似的产品,但我无法列出这些项目,因为在某些情况下,JSON returns: SyntaxError: Unexpected token in JSON at position 2512.我的代码是:
$timeout(function() {
console.log(id_filtroParecido);
Conecta('get','getProdutosFiltrados', id_filtroParecido).then(function(val) {
vm.respostaListaParecidos = val;
});
}, 100);
在上面的代码中,函数 Conecta 在数据库中进行搜索,return搜索 JSON。但它不可预测,因为它有时会起作用,但有时会失败。
这里是 JSON 我收到并且工作正常的示例:
[{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
这里有一个 JSON 的例子,有时 return 错误,有时却没有:
[{"id_produto":"6","nome_produto":"HP G42-214BR","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição do note HP</p>","informacao_produto":"<p>Informações do note JP</p>","tags_produto":"tag1, tag2, tag3","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"6-hp-g42-214br","imagem_principal":"87c2ee41b5b8fc13db9a3c2db655667b.png","tamanho":[{"id_produto_tamanho":"54","nome_produto_tamanho":"1- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"352","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"9","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Ou em 10x de R0.00","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
还有一个 JSON 总是 return 错误的例子:
[{"id_produto":"1","nome_produto":"Epson Impressora 1","ativo_produto":"1","destaque_produto":"1","sob_encomenda_produto":"1","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 1</p>","informacao_produto":"<p>Impressora a Raio Lazer</p>","tags_produto":"Impressora, Lazer, Epson","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"1-epson-impressora-1","imagem_principal":"288738cdb4b99c10e877a25089d46074.jpeg","tamanho":[{"id_produto_tamanho":"43","nome_produto_tamanho":"7- Padr\u00e3o","valor_produto_tamanho":"1500.00","quantidade_produto_tamanho":"200","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"N\u00e3o","tem_promocao_produto_tamanho":"0"}]},{"id_produto":"2","nome_produto":"Impressora Epson 2","ativo_produto":"1","destaque_produto":"0","sob_encomenda_produto":"0","marcadagua_produto":"0","descricao_produto":"<p>Descrição da impressora Epson 2</p>","informacao_produto":"<p>Informações técnicas da impressora Epson 2</p>","tags_produto":"","ordem":"1","acessos":"0","marca_produto":"","slug_produto":"2-impressora-epson-2","imagem_principal":"c38bf5d110a03964740266c3ee43e123.jpeg","tamanho":[{"id_produto_tamanho":"42","nome_produto_tamanho":"5-\u00danico","valor_produto_tamanho":"500.00","quantidade_produto_tamanho":"199","comprimento_produto_tamanho":"16","altura_produto_tamanho":"16","largura_produto_tamanho":"16","peso_produto_tamanho":"16","promocao_valor_produto_tamanho":"0.00","parcelamento_produto_tamanho":"Sim","tem_promocao_produto_tamanho":"0"}]}]
Obs:我在这里使用相同的产品,但这与 returning
的产品无关这是我用来连接 Angular 和 PHP 的工厂代码:
.factory('Conecta', ['$timeout','$q','AppService', function(time, q, Service) {
return function(acao,api,parametro){
var deferred = q.defer();
switch(acao) {
case 'get':
Service.apiGET(api,parametro).then(function(response) {
if(response.status == 200){
deferred.resolve(response.data);
}else{
deferred.resolve(null);
}
}, function (error) {
console.error(error);
});
break;
default:
break;
}
return deferred.promise;
};
}])
有时问题可能在于您 return 不清楚 JSON 正如它在语法规则和浏览器预期的那样,响应的内容类型是 application/json,但是 return 一个字符串,其中包含与 JS 对象非常相似的内容。
JSON
和 JS object
JSON: {"param":"value"}
JS object: {param:"value"}
注意键名的引号。但是如果没有失败的 JSON,很难说代码中的真正问题是什么。
你所有的JSON都是正确的。
您可以执行
JSON.parse('{"kk":11}');
在某些 js REPL
(如浏览器控制台)中为每个人检查该事实。
可能的问题:
- 您正在尝试解析 JSON 的一部分,应该先加载所有块。
- 你答错了JSON,但由于某些原因无法抓住问题示例。