I have this screen to edit user information (fictional, not from a real person). All other fields (name, birth date, age, address, etc.) work and show just fine, but not the social name. The request also does not show on the network tab when pressing F12 in the browser.
Some related function in jsonParser
to load the social name is called loadNomeSocial
, it is called first here. I tried to debug this function but nothing shows up in the console:
function jsonParseInfoPessoa(json) {
let objJson = JSON.parse(json);
usuarioJson = objJson;
nome = objJson[0].nome;
$('.nome').append(nome);
let controleConta = $('#bloqConta');
if (objJson[0].excluido == 1) {
$('#nomeLabel').append(nome + "- Usuário Desativado");
//adicionando botao de reativar
controleConta.append('<a href="control/main.php?req=ativaConta&id=' + identificador + '" class="btn btn-primary">Reativar conta</a>');
} else {
//botao de desativar
$('#nomeLabel').append(nome);
controleConta.append('<a href="control/main.php?req=desativaConta&id=' + identificador + '" class="btn btn-danger">Desativar conta</a>');
}
//formatando data de nascimento objJson[0].data_nascimento
let nascFormatada = objJson[0].data_nascimento.split('-');
nascFormatada = nascFormatada[2] + ' / ' + nascFormatada[1] + ' / ' + nascFormatada[0];
let idade = calculaIdade(objJson[0].data_nascimento);
$('#nasc').append(nascFormatada+'<br>Idade: '+idade + ' Anos');
if (objJson[0].menor_idade === "1") {
loadMenor();
$('#maiorIdade').attr('hidden',true);
} else {
loadContato(identificador);
loadEnd(identificador);
loadDocument();
loadDepententes();
loadLogin(identificador);
loadNomeSocial(identificador);
}
if (objJson[0].ruralino === "1") {
loadRuralino();
} else {
btnInsertRuralino();
}
if (objJson[0].excluido == '0') addBtnEdicaoPessoa();
}
Function that makes the request and loads the social name:
function loadNomeSocial(id) {
ajaxLoadGET('control/main.php?req=selectNomeSocialByPessoaId&id=' + id, parseNomeSocial, '#nome_social');
function parseNomeSocial(json, corpo) {
console.log("Resposta da requisição Nome Social:", json);
let objJson = JSON.parse(json);
if (objJson.length > 0) {
$('#nome_social').append(objJson[0].nomesocial);
} else {
console.log("Nenhum nome social encontrado.");
}
}
}
Function that loads the values when clicking the pencil icon to edit them:
function editUsuarioNome() {
$('#btNome').removeAttr("onclick");
let dadosBasicos = $('#nomeNasc');
ajaxLoadGET('control/main.php?req=selecUsuarioLogado', function(response) {
let userData = typeof response === 'string' ? JSON.parse(response) : response;
// Log do valor exato e seu tipo para diagnóstico
console.log("Valor de nv_acesso:", userData.nv_acesso);
console.log("Tipo de nv_acesso:", typeof userData.nv_acesso);
console.log("Código de caracteres:", Array.from(userData.nv_acesso || "").map(c => c.charCodeAt(0)));
// Adicionar log para nome_social
console.log("Valor de nome_social:", nome_social);
console.log("Tipo de nome_social:", typeof nome_social);
console.log("Código de caracteres nome_social:", Array.from(nome_social || "").map(c => c.charCodeAt(0)));
// Normalização do valor para evitar problemas com acentos ou espaços
let nivelNormalizado = "";
if (userData.nv_acesso) {
nivelNormalizado = userData.nv_acesso.trim().normalize("NFD").replace(/[u0300-u036f]/g, "");
}
console.log("Nível normalizado:", nivelNormalizado);
let nasc = usuarioJson[0].data_nascimento;
dadosBasicos.empty();
let opcoesSelect = "";
// Abordagem inversa - exibir Coordenação para todos EXCETO para níveis específicos
let niveisComuns = ["Administrador", "Professor", "Aluno", "Visitante"];
let isNivelComum = niveisComuns.some(nivel =>
userData.nv_acesso === nivel || nivelNormalizado === nivel
);
// Se NÃO for um dos níveis comuns, assumimos que é Coordenação
if (!isNivelComum) {
opcoesSelect += `<option value=5>${CargoCoordenador}</option>`;
}
opcoesSelect += `
<option value=4>Visitante</option>
<option value=3>${CargoAluno}</option>
<option value=2>${CargoProf}</option>
<option value=1>${CargoAdm}</option>
`;
// Adicionar um evento para capturar quando o campo nome_social é alterado
dadosBasicos.append(`
<form action="control/main.php?req=updateDadosBasicos&id=${identificador}" method="POST">
<p>Nível de Acesso: <select id="nv_acesso" name="nv_acesso">${opcoesSelect}</select></p>
<p>Nome: <input type='text' name='nome' value="${nome}" required="required"></p>
<p>Data nascimento: <input type="date" name="nascimento" value="${nasc}" required="required"></p>
<p>Nome Social: <input type='text' name='nome_social' value="${nome_social}" id="nomeSocial"></p>
<br/>
<input type="submit" class="btn btn-primary" value="Gravar"/>
</form>
`);
// Adicionar evento para monitorar alterações no campo nome_social
$('#nomeSocial').on('input', function() {
console.log("Nome Social alterado para:", $(this).val());
});
// Adicionar um interceptador para o envio do formulário para ver os dados antes do envio
$('form').on('submit', function(e) {
// Para fins de debug, você pode querer ver o que está sendo enviado
console.log("Dados do formulário a serem enviados:");
const formData = new FormData(this);
for (const pair of formData.entries()) {
console.log(pair[0] + ': ' + pair[1]);
}
// Remova esta linha se quiser interromper o envio para debug
// e.preventDefault();
});
}, '#nv_acesso');
}
The console for nome_social
shows:
Valor de nome_social:
jsonParser.min.js:17 Tipo de nome_social: string
jsonParser.min.js:17 Código de caracteres nome_social: []length: 0[[Prototype]]: Array(0)
jsonParsermin
function:
function loadNomeSocial(id){console.log("Chamando loadNomeSocial com ID:",id),ajaxLoadGET("control/main.php?req=selectNomeSocialByPessoaId&id="+id,parseNomeSocial,".carr");function parseNomeSocial(json,corpo){console.log("Resposta da requisição Nome Social:",json);let objJson=JSON.parse(json);objJson.length>0?$(".nome-social").append(objJson[0].nomesocial):console.log("Nenhum nome social encontrado.")}}
Div where the span is:
<div id="nomeNasc">
<p>Nome: <span class="nome"> </span></span></p>
<p>data nascimento: <span id="nasc"></span></p>
<p>Nome Social: <span id="nome_social"></span></p>
</div>