Funçoes não estao funcionando em host

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)

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.

1 curtida

Poste seu JSON.

[{“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”}]

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.

1 curtida

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

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

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.

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.

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.

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.

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.

1 curtida

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.