Mesmo quando ‘cpfok = 1’ sempre cai na condição “else” e mostra o alerta e não o modal.
Aqui esta o retornos quando ‘cpfok = 1’ , neste caso teria que ir para o modal:
Mas, só para eu entender, por que não retorna true ou false? Me parece mais lógico, salvo se você precisa realizar alguma operação que necessite de um valor inteiro.
Porém, eu também não entendi a razão para não funcionar.
No js primeiro é bom dizer ao jquery que o retorno será json…
$.ajax...
...
dataType: 'json',
...
Isso fará o parse do retorno…
success: function(json){
console.log(json.cpfok); // a chave la no json_encode lembra?
}...
Para ver o resultado de console.log use o F12 do navegador na aba console, melhor que ficar usando alert em tudo que é canto e fica mais profissional o desenvolvimento, já usando testes, etc…
E @darlan_machado o fato de usar apenas o operador de igualdade ==, nesse caso não fará diferença se o valor será int ou str o js tratará da mesma forma, assim como no php, por isso existe um operador de identidade === que testará não só o valor como o tipo da variável…
Seu código no php/codeigniter não está imprimindo apenas json, verifique se não há outro ponto onde exista echo, print, printf, print_r, var_dump, die, exit, etc ou até mesmo html puro…
Perceba que nesse último retorno logo no começo há o trecho:
{"cpfok":false}
Ou seja, o objetivo está sendo alcançado, o fato de você usar dataType: ‘json’ no ajax faz você obrigatoriamente retornar apenas json pelo php pegou?
Qualquer coisa que não seja json o dataType não consegue converter e no seu caso além do json, está retornando html junto.