Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Josoe

nao consigo entrar na função success json

Recommended Posts

Dai galera....não estou conseguindo passar o retorno do meu codigo para a função success do meu ajax via json....estou usando codeiginiter, php, mysql....alguem pode me socorrer....já faz quase uma semana que estou tentando e não desempaco...

 

Meu html...

 

<!DOCTYPE html>
<html lang="pt-BR">
    <?php $this->load->view('Inserts/head'); ?>
    <body id="principal">
        <div class="container">
            <div class="alert alert-success" style="display: none;">

            </div>
            <div class="row">
                <div class="col-sm-10 col-sm-offset-1">
                    <!--         <div class="col-sm-1"></div> -->
                    <div class="col-md-4 col-sm-6"></div>
                    <div class="col-md-4 col-sm-6">
                        <div class="card-container manual-flip animated tada">
                            <div class="card">
                                <div class="front">
                                    <div class="cover">
                                        <img src="<?php echo base_url('bibliotecas/imagens/fundoLogin.jpg'); ?>"/>
                                    </div>
                                    <div class="user">
                                        <img class="img-circle" src="<?php echo base_url('bibliotecas/imagens/avatar.jpg'); ?>"/>
                                    </div>
                                    <div class="content">
                                        <div class="main">
                                            <form>
                                                <div class="form-group">
                                                    <input type="email" required="" class="form-control" id="exampleInputEmail1" placeholder="Email">
                                                </div>
                                                <div class="form-group">
                                                    <input type="password" required="" class="form-control" id="exampleInputPassword1" placeholder="Senha">
                                                </div>
                                                <button type="submit" class="btn btn-primary btn-block">Entrar</button>
                                            </form>
                                        </div>
                                        <div class="footer">
                                            <button class="btn btn-simple" rel="tooltip" title="Cadastrar" onclick="rotateCard(this)">
                                                <i class="fa fa-mail-forward"></i> Não sou cadastrado
                                            </button>
                                        </div>
                                    </div>
                                </div> <!-- end front panel -->
                                <div class="back">
                                    <div>
                                        <h5 class="text-center">"Preencha os dados abaixo!"</h5>
                                    </div>
                                    <div class="content">
                                        <div class="">
                                            <form id="cadastroCliente" action="#" method="post">
                                                <div class="form-group">
                                                    <input type="text" required="" name="nomeCliente" class="form-control" id="nomeCliente" placeholder="Nome completo">
                                                </div>
                                                <div class="form-group">
                                                    <input type="email" required="" name="emailCliente" class="form-control" id="emailCliente" placeholder="E-mail">
                                                </div>
                                                <div class="form-group">
                                                    <input type="text" required="" name="telefoneCliente" class="form-control" maxlength="15" id="telefoneCliente" placeholder="Telefone">
                                                </div>
                                                <div class="form-group">
                                                    <input id="txtSenha" type="password" name="senhaCliente" required="" class="form-control" id="senha" placeholder="Senha">
                                                </div>
                                                <div class="form-group">
                                                    <input id="senhaRepetida" type="password" name="senhaCliente" required="" oninput="validaSenha(this)" class="form-control" id="senhaRepetida" placeholder="Repita a senha">
                                                </div>
                                                <div class="form-group">
                                                    <input type="file" id="foto">
                                                </div>
                                                <button id="adicionarCliente" type="submit" class="btn btn-info btn-block">Salvar</button>
                                            </form>
                                        </div>
                                    </div>
                                    <div class="footer">
                                        <button class="btn btn-simple" rel="tooltip" title="Voltar" onclick="rotateCard(this)">
                                            <i class="fa fa-reply"></i> Voltar
                                        </button>
                                    </div>
                                </div> <!-- end back panel -->
                            </div> <!-- end card -->
                        </div> <!-- end card-container -->
                    </div> <!-- end col sm 3 -->
                    <!--         <div class="col-sm-1"></div> -->
                </div> <!-- end col-sm-10 -->
            </div> <!-- end row -->
            <div class="space-200"></div>
        </div>
        <?php
        $this->load->view('Inserts/scripitsRodape');
        ?>
    </body>
</html>

 

 

 

Meu controller....

 

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function index() {
        $dados['tituloPrincipal'] = 'Login';
        $this->load->view('Listar/login', $dados);
    }

    public function cadastroLogin() {
        $dados['nomeCliente'] = $this->input->post('nomeCliente');
        $dados['telefoneCliente'] = $this->input->post('telefoneCliente');
        $dados['senhaCliente'] = $this->input->post('senhaCliente');
        $dados['emailCliente'] = $this->input->post('emailCliente');
        $this->load->model("mLogin");
        $result = $this->mLogin->cadastrandoLogin($dados);
        $msg['success'] = false;
        if ($result) {
            $msg['success'] = true;
        }
        echo json_encode($msg);
    }
}
 

 

Meu Model....

 

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class mLogin extends CI_Model {
    
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function cadastrandoLogin($dados = null) {
        if ($dados != null) {            
            $this->db->insert('clientes', $dados);
        }
        try {
            return true;
        } catch (Exception $exc) {
            return false;
        }
    }

}
 

 

 

Meu script.....

 

$(function () {
    $('#adicionarCliente').click(function () {
        var data = $('#cadastroCliente').serialize();
        if ((nomeCliente && emailCliente && telefoneCliente && senhaCliente) != null) {
            $.ajax({
                method: 'POST',
                url: '<?php echo base_url() ?>Login/cadastroLogin',
                data: data, //Dados
                async: false,
                dataType: 'json',
                success: function (response) {
                    if (response.success) {
                        alert(response);
                        //ajax_redirect('<?php echo base_url() ?>Login');
                    }
                    else
                    {
                        alert("Lasco");
                    }
                },
                error: function () {
                    alert('Lascado');
                }
            });
        }
    });
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

 

1. De onde são essas variáveis? nomeCliente, emailCliente, telefoneCliente, senhaCliente?

2. Seu Controller está recebendo a requisição?

3. Qual retorno aparece no console do navegador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder.....

1 - vem do formulário postado acima, são dados dos clientes a serem cadastrados;

2 - Sim, recebe os dados passados pelo ajax;

3 - Cara, olha só...o ajax envia os dados para o controller, este recebe e envia os dados

para o model que faz a inserção dos dados no banco de dados e retorna true para o controller,

caso a operação seja bem sucedida, a variavel $msg['success'] = true e retornaria para o succsess do

ajax, porém aqui trava e não passa para a função succsess para o ajax e mostra na tela {"success":true}, porque

coloquei  "echo json_encode($msg);" para retornar ao ajax, mas aqui que trava e não vai.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já tive casos parecidos com o CodeIgniter, confesso que a 'solução' foi usar o bloco 'error' devido a urgência.

 

Qual a versão do CI ?

 

 

Algumas coisas que você pode verificar:

1- Charset dos arquivos.

 

2- Se tem tags desnecessárias de fechamento no php, ex:

<?php

//code ....
  
//isso aqui pode dar problema veja o espaço no final do \?\>
?> 

3 - Verificar o nivel HTTP da resposta.

 

Oq me lembro do problema era uma especie de 'espaço/caracter' maluco que que ele criava no CodeIgniter veja o nivel de response HTTP (200? 500? etc)response e preview via Chrome ...

 

Da uma lida:

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax

Pode te ajudar na parte da requisição resposta:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, gabrieldarezzo disse:

Eu já tive casos parecidos com o CodeIgniter, confesso que a 'solução' foi usar o bloco 'error' devido a urgência.

 

Qual a versão do CI ?

 

 

Algumas coisas que você pode verificar:

1- Charset dos arquivos.

 

2- Se tem tags desnecessárias de fechamento no php, ex:


<?php

//code ....
  
//isso aqui pode dar problema veja o espaço no final do \?\>
?> 

3 - Verificar o nivel HTTP da resposta.

 

Oq me lembro do problema era uma especie de 'espaço/caracter' maluco que que ele criava no CodeIgniter veja o nivel de response HTTP (200? 500? etc)response e preview via Chrome ...

 

Da uma lida:

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax

Pode te ajudar na parte da requisição resposta:

 

Obrigado cara, vou dar uma analisada e retorno o resultado aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode testar os retornos. Troque o datatype do ajax para 'text' e imprima pelo php apenas 1 ou 0.

 

O seu bloco de código do Model abaixo está meio estranho. Isso não vai funcionar como você gostaria.

public function cadastrandoLogin($dados = null) {
        if ($dados != null) {            
            $this->db->insert('clientes', $dados);
        }
        try {
            return true;
        } catch (Exception $exc) {
            return false;
        }
    }

 

Você não precisa usar o try/catch aqui, pois já está usando no controller:

public function cadastrandoLogin($dados = null) {
    
		if ($dados != null) { 

            throw new Exeption("Informe os dados ...");
        }
		return $this->db->insert('clientes', $dados);
    }

 

Com estas mudanças o seu controller ficaria assim:

public function cadastroLogin() {
        $dados['nomeCliente'] = $this->input->post('nomeCliente');
        $dados['telefoneCliente'] = $this->input->post('telefoneCliente');
        $dados['senhaCliente'] = $this->input->post('senhaCliente');
        $dados['emailCliente'] = $this->input->post('emailCliente');
        $this->load->model("mLogin");
        try{
			$this->mLogin->cadastrandoLogin($dados);
            echo 1;
		}catch(Exception $exc){
			echo 0;
		}
    }

 

Talvez o problema esteja em outra parte do código, mas faça esses testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clovis.sardinha
      Estou em um impasse pois sei pouco de javascript. Estou fazendo um autocomplete com CI4 e Javascript.
      Consigo gerar, através do controllers/model do CI4 um arquivo em json, mas não consigo retorná-lo para o javascript para poder mostrar as opções para consulta. 
      O console.log mostra que estou obtendo o  json() { [native code] }.
      Segue os dois arquivos para ver se alguém me ajuda.
      //arquivo cidade.js async function carregar_cidade(valor) { if (valor.length >= 3) { //console.log("Pesquisar:" + valor); const dados = fetch('Testes/?cidade='+valor, { method: "get", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }); const resposta = (await dados).json; console.log(resposta); var html = "<ul class='list-group position-fixed'>"; html += "<li class='list-group-item'>" + resposta['cid_nome'] + "</li>"; html += "</ul>"; } } <?php //arquivo Testes.php namespace App\Controllers; use App\Models\CidadeModel; /** NÃO MANDAR PARA O SERVIDOR - APENAS TESTES DE FUNÇÕES E OUTROS ELEMENTOS DO CI4 */ class Testes extends BaseController{ protected $tbCidades; public function __construct(){ $this->tbCidades = new CidadeModel(); } public function index(){ $request = \Config\Services::request(); $client = \Config\Services::curlrequest(); $cidades=[]; if($get=$request->getGet()){ $cities=$get['cidade']; $cidadeFiltrada=$this->tbCidades->getCidByName($cities); $cidades= json_encode($cidadeFiltrada); //dd($cidades); } echo view('Testes/testes'); } public function salvar(){ $request = \Config\Services::request(); if($post=$request->getPost()){ dd($post); } } } <!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Autocomplete</title> </head> <body> <div class="container"> <h1 class="mt-4 mb-4">Formulário</h1> <form class="row g-3"> <div class="col-12"> <label for="cidade" class="form-label">Cidade</label> <input type="text" name="cidade" class="form-control" id="cidade" placeholder="Pesquisar cidade" onkeyup="carregar_cidade(this.value)"> </div> <span ></span> </form> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="assets/js/cidade.js"></script> </body> </html>
    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por FabianoSouza
      Olá pessoal.
      Eu já utilizo o FOR JSON PATH para retornar o o resultado de uma consulta com JSON. Isso eu já sei fazer.
       
      O que preciso é criar uma função que receba um SELECT como parâmetro e retorne o resultado desse SELECT já formatado como JSON.
      Estou tentando isso, mas sem sucesso.
       
      A function dbo.fn_retornaJsonPath :
      (@String NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN BEGIN IF @String <> NULL SET @String = (SELECT @String AS jsonPath FOR JSON PATH) END BEGIN IF @String IS NULL SET @String = '[]' END RETURN @String END Forma de executar:
      SET @sql = 'SELECT ' SET @sql = @sql + ' dbo.fn_retornaJsonPath ((SELECT TT.tema FROM dbo.tabela AS TT WHERE TT.cd = CTT.id)) AS ''temas'' ' SET @sql = @sql + ' FROM dbo.minhaTab AS CTT ' EXEC(@sql) Mas não está rolando....
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por joao b silva
      <input type="text" class="form-control" id="produto" name="produto"  onblur="BuscaPr()">
       
       
      Ola. eu chamo a função JS a seguir  no onblur do input acima. cikiqyeu is alerts para confirmar a chamada da função. ta chamando. mas alem dos alerts nao acontece mais nada. segue a função JS e o arquivo php que é chamado no ajax:
       
       
      FUNSAO JS
       
          function BuscaPr(){
              var buscaTexto = document.getElementById('produto').value
              alert(buscaTexto) 
              alert(buscaTexto.length) 
              $.ajax({
                  method: 'post',
                  url: 'sistema/produto/buscapr.php',
                  data: {busca: 'sim', texto: buscaTexto},
                  dataType: 'json',
                  success: function(retorno){
                          if(retorno.qtd == 0){
                              alert('q = 0')
                                  $('#resbuscapro').html('<p>Não encontramos resultados para sua busca</p>');
                          }else{
                              alert('q + 0')
                                  $('#resbuscapro').html(retorno.dados);
                          }
                  }
              });
          }

      O ARQUIVO PHP:
       
      <?php
      if (!session_id()):
          session_start();
      endif;
      require_once('_app/Config.inc.php');
      require_once('./Lib.php');
      if (isset($_POST['busca']) && $_POST['busca'] == 'sim'):
          $textoBusca = strip_tags($_POST['texto']);
          $retorno = array();
          $Par = "EM={$_SESSION['userlogin']['emCODIGO']}";
          $Fil = " where emCODIGO = :EM and prDESCRICAO like '%{$textoBusca}%' ";
          $Produto = new Read;
          $Produto->FullRead("select * from produto {$Fil}", $Par);
          if ($Produto->getResult()):
              $retorno['qtd'] = $Produto->getRowCount();
              foreach ($Produto->getResult() as $pro):
                  extract($pro);
                  $retorno['dados'] .= '<a href="#" id='.$prCODIGO.':'.$prVENDA.'">'. utf8_encode($prDESCRICAO).'</a>';
              endforeach;
          endif;
          echo json_encode($retorno);
      endif;
      ?>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.