Funçoes não estao funcionando em host

12 respostas
vitor2

Bom meu site esta funcionando perfeitamente em localhost, mas quando coloco ele na host(cpanel) ele, para simplesmente de funcionar varias funções uma delas que eu eu não to entendendo o porque não esta funcionando é essa aqui:

$(document).ready(function(){      
	var ajax = new XMLHttpRequest();
	ajax.open('GET', 'categorias.php?primeiro=sim', true);
	ajax.send();
	ajax.onreadystatechange = function() {
		if(ajax.readyState == 4 && ajax.status == 200) {
			$("#segf").css("display", "none");
			$("#ter").css("display", "none");
			$("#qua").css("display", "none");
			$("#qui").css("display", "none");
			$("#sex").css("display", "none");
			
			var pessoasJson = JSON.parse(ajax.responseText);
			for(x in pessoasJson){
				var pessoa = pessoasJson[x];
				$('#primeiro').append($('<option>', {
               value: pessoa.id,
               text: pessoa.name
                }));
			}

		}
	}
});

Ele esta pegando um json de um link que eu criei, o json esta normal, e em local funciona normalmente mas na host da esse erro:

VM519:3 Uncaught SyntaxError: Unexpected token  in JSON at position 2
at JSON.parse ()
at XMLHttpRequest.ajax.onreadystatechange (categorias_get.js:12)

12 Respostas

TerraSkilll

Olhe no console o que está vindo no ajax.responseText. Aparentemente, deve estar vindo algum caractere indevido ou o Json está mal formado (faltando alguma chave ou aspa).

Abraço.

FearX

Poste seu JSON.

vitor2

[{“id”:“MLB5672”,“name”:“Acessórios para Veículos”},{“id”:“MLB1499”,“name”:“Agro, Indústria e Comércio”},{“id”:“MLB1403”,“name”:“Alimentos e Bebidas”},{“id”:“MLB1071”,“name”:“Animais”},{“id”:“MLB1367”,“name”:“Antiguidades”},{“id”:“MLB1368”,“name”:“Arte e Artesanato”},{“id”:“MLB1384”,“name”:“Bebês”},{“id”:“MLB1246”,“name”:“Beleza e Cuidado Pessoal”},{“id”:“MLB1132”,“name”:“Brinquedos e Hobbies”},{“id”:“MLB1430”,“name”:“Calçados, Roupas e Bolsas”},{“id”:“MLB1039”,“name”:“Câmeras e Acessórios”},{“id”:“MLB1743”,“name”:“Carros, Motos e Outros”},{“id”:“MLB1574”,“name”:“Casa, Móveis e Decoração”},{“id”:“MLB1051”,“name”:“Celulares e Telefones”},{“id”:“MLB1798”,“name”:“Coleções e Comics”},{“id”:“MLB5726”,“name”:“Eletrodomésticos”},{“id”:“MLB1000”,“name”:“Eletrônicos, Áudio e Vídeo”},{“id”:“MLB1276”,“name”:“Esportes e Fitness”},{“id”:“MLB263532”,“name”:“Ferramentas e Construção”},{“id”:“MLB3281”,“name”:“Filmes e Seriados”},{“id”:“MLB1144”,“name”:“Games”},{“id”:“MLB1459”,“name”:“Imóveis”},{“id”:“MLB1648”,“name”:“Informática”},{“id”:“MLB218519”,“name”:“Ingressos”},{“id”:“MLB1182”,“name”:“Instrumentos Musicais”},{“id”:“MLB3937”,“name”:“Joias e Relógios”},{“id”:“MLB1196”,“name”:“Livros”},{“id”:“MLB1168”,“name”:“Música”},{“id”:“MLB264586”,“name”:“Saúde”},{“id”:“MLB1540”,“name”:“Serviços”},{“id”:“MLB1953”,“name”:“Mais Categorias”}]

FearX

Bro, seu JSON tá inválido.

Entra nesse site, joga seu JSON, clica em “Validate JSON” e vê o que você está fazendo errado.

Se não conseguir entender, posta aqui o que você acha que é e nós te ajudaremos.

vitor2

Consegui entender sim, mas uma coisa você sabe o motivo de em localhost funcionar normalmente ?

FearX

Hmmm não sei, bro. Sei que o JSONLint não reconheceu suas aspas, apenas.

vitor2

Mano kk, olha que viajem, eu copiei os 2 json’s(do local e da host)
Fiz 2 testes
1º - Copiei um de cada e coloquei para ver se os codigos são iguais (O resultado foi que os dois são iguais)
2º - Copiei e colei na barra de pesquisa e olha o que deu:

Local: (Vou postar so o inicio que tem a modificação)
[{“id”:“MLB5672”,“name”:“Acess\u00f3rios para Ve\u00edculos”}

Host:
[ {“id”:“MLB5672”,“name”:“Acess\u00f3rios para Ve\u00edculos”}

Você pode ver que tem um espaço ali, coisa que não vejo no: navegador, editores de codigos nem mesmo nesse campo de pergunta aq.

TerraSkilll

Esse espaço não deveria deixar seu json inválido.

A aspa que está sendo gerada pelo seu servido é essa :

ou essa: "

Porque a primeira não funciona no Json. Fazendo a substituição de “ por ", o validador sugerido pelo FearX diz que o json é válido.

Abraço.

FearX

Isso é verdade, eu acredito que seu problema pode estar realmente nas aspas. Talvez, por algum motivo que eu sinceramente não faço ideia, localmente ele aceite um tipo de aspas, e remotamente não.

Isso é um grande chute.

vitor2

Cara descobri, tem um caractere invisível na meu código, que ta corrompendo o json:
[{“id”:“MLB5672”,“name”:“Acess\u00f3rios para Ve\u00edculos”}

Como voce pode ver é esse “&#65279” ele converte para um caractere invisivel, todo o site ta tendo isso, https://img1.wsimg.com/tcc/tcc_l.combined.1.0.6.min.js tambem incluiu esse script que não sei de onde, deve ser ele que ta trazendo esse caractere.

vitor2

Resolvi o problema, coloquei o codigo no notepad ++, fui em Formatar >
Sem%20t%C3%ADtulo

Clique em converter primeiro e depois codificação.

Caso alguem estiver com o mesmo problema que eu tive, ja esta a ajuda.

TerraSkilll

Ia ser meu próximo palpite. Pra estar gerando essas diferenças, o problema ser a codificação dos caracteres.

Não sei o que você está usando no server (php, java), mas a maioria das linguagens permite determinar a codificação do retorno do ajax, então mesmo que o fonte esteja numa codificação diferente, o json retornado pode ficar com a codificação correta. É até mais indicado do que confiar na codificação dos arquivos fonte.

Abraço.

Criado 3 de outubro de 2018
Ultima resposta 3 de out. de 2018
Respostas 12
Participantes 3