I'm trying to figure out what's happening with the ajax code below. If the string comes with data, it works correctly, but if it comes empty, the error occurs:
JSON.parse: unexpected end of data at line 2 column 1 of the JSON data
If I give an alert on the% w_that is where it gives the error, it is empty, but it does not enter the exception I made: var dados = JSON.parse(xmlreq.responseText);
Any idea where I might be going wrong?
UPDATE
Complete Ajax:
/**
* Função para criar um objeto XMLHTTPRequest
*/
function CriaRequest() {
try{
request = new XMLHttpRequest();
}catch (IEAtual){
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(IEAntigo){
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(falha){
request = false;
}
}
}
if (!request)
alert("Seu Navegador não suporta Ajax!");
else
return request;
}
//Não executa nada até a execução terminar
var requestActive = false;
function getDados() {
if (requestActive) return;
requestActive = true;
// Declaração de Variáveis
/* Caso for necessário passar mais parametros além do nome
* basta adicionar uma variável aqui e editar no GET
*/
var ids = ["usuario", "senha", "email", "admin", "cod_setor", "nome_completo", "ativo", "habilitacao", "categoria"];
var cracha = document.getElementById("cracha").value; //CAMPO QUE VEM DO INDEX.PHP
var result = document.getElementById("content"); //DIV DE RETORNO DOS DADOS
var xmlreq = CriaRequest();
// Exibe a mensagem de progresso
//result.innerHTML = '<img src="images/Progresso.gif"/>';
ids.forEach(function (id) {
document.getElementById(id).value = 'Aguarde...';
});
// Iniciar uma requisição
// Se for colocar mais variáveis, é aqui. Exemplo: processa.php?txtnome=" + nome + '&admissao=' + admissao
xmlreq.open("GET", "processaMotorista.php?cracha=" + cracha, true);
// Atribui uma função para ser executada sempre que houver uma mudança de estado
xmlreq.onreadystatechange = function () {
// Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
if (xmlreq.readyState == 4) {
// Verifica se o arquivo foi encontrado com sucesso
if (xmlreq.status == 200) {
//Se o retorno foi vazio do Oracle
if (xmlreq.responseText == "") {
document.getElementById("nome_completo").focus();
ids.forEach(function (id) {
document.getElementById(id).value = '';
});
//Se encontrou dados
} else {
//Aqui recebe os dados do processa.php, abre e aplica nos campos desejados
var dados = JSON.parse(xmlreq.responseText);
// função para preencher os campos com os dados
ids.forEach(function (id) {
document.getElementById(id).value = dados[id];
});
}
} else {
result.innerHTML = "Erro: " + xmlreq.statusText;
}
}
requestActive = false;
};
xmlreq.send(null);
}