How do I pass data to a php class via ajax being class instance another?

-1

Personal hello I hope you can help me, I have this problem a long time

I'm trying to get my data via Ajax for my class but in the URL I do not know how to reach it in a way that does not error

I tried the following way

$.ajax({
     type:'post',
     url:'Classes/Usuario.class.php',
     ajax:'1',
     data:{id:1},
     success: function (data){
          alert(data)
     }
});

Well, remarks if you help me respond.

Another thing that can help, my classes are called automatically by the magic method __autoload (). I believe that there is a different way to write the URL.

Good people, please do not indicate another post, if you do not understand tell us in the comments that they are with you until we can solve this problem!

Thank you for helping me! Until ...

As requested I am just below comes the code of the file User.class.php

<?php
/**
 * Created by PhpStorm.
 * User: Pedro
 * Date: 19/01/2016
 * Time: 00:43
 */

class Usuario extends BancoPizza
{
    public $Tabela = 'pizzaria';
    public $Campos = array(
        'nome_pizzaria',
        'usuario_pizzaria',
        'senha_pizzaria',
        'rua_pizzaria',
        'numero_pizzaria',
        'bairro_pizzaria',
        'cidade_pizzaria',
        'uf_pizzaria',
        'status_pizzaria'
    );



    /**
     * @param $dados -> Campos da tabela
     * @param $Campos -> A classe ja tem os campos da tabela
     */


    public function verUm($where=null){
        return parent::verUm($this->Tabela, $where);
    }

    public function verTodos($where=null, $ordem=null)
    {
        return parent::verTodos($this->Tabela, $where, $ordem);
    }

    public function excluir($where)
    {
        //Aqui eu queria pegar a Id do item clicado e através do ajax passar essa id, porem preciso saber como especificar o método que esse meu valor vai, correto ?
        return $_POST['id'];
        return parent::excluir($this->Tabela, $where);
    }

    public function editar($campoTabela, $valor, $id)
    {
        parent::editar($this->Tabela, $campoTabela, $valor, $id);
    }
}
    
asked by anonymous 27.01.2016 / 03:21

1 answer

1

Partner, assuming you're not using MVC, I suggest something like this:

$("body").delegate(".btnAcao", function(e){
     e.preventDefault() //Retirando o comportamento padrão

/*
     *Você pode recuperar os valores do seu form utilizando o método .serializeArray()
     */
    var arrayDados = $("#id_do_form").serializeArray();
    arrayDados['funcao'] = 'excluir';


    $.ajax({
         type:'post',
         url:'Classes/usuario-controller.class.php',
         data: arrayDados,
         success: function (data){
              alert(data)
         }
    });

});

Instead of directly invoking your User class, you send your data to another page that will be responsible for making that connection between your view (View) and your User class (Model). I called this new user-controller.php file.

Note that the values of my form were caught with .serializeArray()

user-controller.php

<?php

/**
 * adiciona todos os seus includes que você precisa...
 * 
 * Nesse momento você pode recuperar os valores do seu form normalmente.
 * Aqui você também poderá tratar suas variáveis, limpando-as e se certificando de 
 * que os dados que foram inseridos estão corretos
 */
$id = filter_input(INPUT_POST, 'id');
$nome = filter_input(INPUT_POST, 'nome');
$email = filter_input(INPUT_POST, 'email');
$telefone = filter_input(INPUT_POST, 'telefone');

$metodo = filter_input(INPUT_POST, 'funcao');


//Instancia a classe que precisa
$usuario = new Usuario();

/**
 * A partir desse momento você poderá chamar o método que você deseja.
 * 
 * OBS: Lembrando que o seu retorno para o página anterior virá daqui...
 * 
 * Como exemplo, vamos excluir o registro informado:
 */

echo $usuario->$metodo($id);

//Se tudo ocorrer bem, o seu retorno será true.

The logic is this, just adapt to what you need.

I hope I have helped!

    
28.01.2016 / 04:09