Error passing through Ajax Parameters for function in PHP class

0

Is the first time I try to pass parameters from the ajax to my function that is in a class in php, so I ask, why is not it working? searching the forum vi I could put

data: {
var1 = 'var1',
var2 = 'var2',

},

Ajax - Code has been fixed - It works here!

  /* Função de Busca - Galeria de Imagens AJAX */
function buscar($tamanho){
    var pasta = $('#pasta').val();  
    // utilizando o split para quebrar o diretorio e receber somente o nome da pasta
    var dirimg = pasta.split("/galeriaimg/");
    var tamanho = $tamanho; 
    var data = {
      tamanho: tamanho,
      diretorio: dirimg[1], 

    }

    $.ajax({
        type: 'POST',
        dataType: 'json',  
         url: '/wpauditoria/painel-admin/include/galeriaimg/galeria.php',      
        //  url: '/wpauditoria/inc/class/Galeriaimg_crud.php?diretorio='+dirimg+'/&tam='+tamanho,  
            data:data,
            success: function(result){ 

               $.each(result, function(key, value){
                    var container = '<div class="col-md-4" id="col-'+key+'">';
                    container +=        '<div class="img-wrap">';
                    container +=            '<img src="/wpauditoria/images/'+tamanho+'/galeriaimg/'+dirimg[1]+'/'+value+'" class="img-return" alt="galeria" "/>';    
                    container +=            '<a href="#" class="btn btn-default btn-sm delete" onclick="excluir('+key+')"><i class="fa fa-trash"></i></a>'; 
                    container +=         '</div>';    

                    container +=         '<input type="hidden" name="imagemgaleria['+key+'][endereco]" value="/galeriaimg/'+dirimg[1]+'/'+value+'" />';    
                    container +=         '<input type="text" placeholder="Título" name="imagemgaleria['+key+'][titulo]" class="form-control inputgaleria" />';   
                    container +=         '<textarea name="imagemgaleria['+key+'][descricao]" placeholder="Descricao" class="form-control inputgaleria" ></textarea>';   
                    container +=    '</div>';   

                    $('#galeriaimg').append(container);
               });

               /* monstrando os botoes que foram ocultados.*/
               $('.oculto').show();
              $('.group').remove();
         }
    });
}

Class:

Class Galeriaimg_crud {

    public function __construct() {
     //
    }

        ///////////////////////////////// FUNÇÃO PARA TRATAR OS ARQUIVOS DO DIRETORIO///////////////////////
    // Função que verifica que verifica se todos os retornos são arquivos e retira os invalidos

    function verifica($param){
        if (!is_dir($param)){
            return $param;
        }
    }

///////////////////////////////// FUNÇÃO PARA OBTER OS ARQUIVOS DO DIRETORIO///////////////////////
        public function arquivos(){

                  $diretorio = $_POST["diretorio"];
                  $tam = $_POST["tamanho"];                    

                    // repassando o caminho para a variavel
                    $dir = $_SERVER['DOCUMENT_ROOT']."/wpauditoria/images/$tam/galeriaimg/$diretorio";

                    // escaneando o diretorio através do scandir
                    $files = scandir($dir);                    

                    // realizando um filtro no retorno dos dados do diretorio
                    $result = array_filter($files, 'Galeriaimg_crud::verifica');                             

                    // codificando o retorno através do json_encode  
                    // retorno do conteudo
                    return json_encode($result);
            }

Console Print

For Debug I'm calling the class with a button as follows. The code was changed to Get instead of post but it still did not work (I updated it here ...)

<?php 

if (isset($_GET['cadastrar'])){

  $galeriaimg_crud = new Galeriaimg_crud();

  $result = $galeriaimg_crud->arquivos();
  var_dump($result);

}

?>
    
asked by anonymous 26.08.2017 / 05:11

3 answers

1

Then the object in javascript has s yntax error should look like this:

var data = {
    chave1: 'valor1',
    chave2: 'valor2'
}

To pass this object through ajax, follow this small example

$.ajax({
 type: "POST",
 url: "MinhaPagina.php",
 data: data, 
 success: function(data) {
      alert('sucesso!');
 },
 error: function(){
     alert('ocorreu um erro!');
 }
});

In php you can capture this way:

echo $_POST['chave1']; // valor1
echo $_POST['chave2']; // valor2
    
26.08.2017 / 13:54
0

Put this at the beginning of your files function ()

$diretorio = $_GET["diretorio"];
$tamanho = $_GET["tam"]; 

In the place that this is:

$diretorio = $_POST["dirimg"];
$tamanho = $_POST["tam"];

In ajax change the type to get

    
26.08.2017 / 05:20
0

Problem solved! Thank you to all involved! With your help I was able to identify where my error was ...

To test I was instantiating the class on a button so I could not get the variable return php said it did not exist.

Good to solve, I changed the Ajax url, calling a file that I created in the gallery.php name, instanciei the class along with the met and return, the problem has been solved. I updated the Code on the first post to make it correct in case someone needs it in the future

galeria.php

<?php


      // instanciando a Classe
      $galeriaimg_crud = new Galeriaimg_crud();
      // recebendo o retorno do metodo Arquivos

      $result = $galeriaimg_crud->arquivos();

      // exibindo o retorno
      echo $result;

 ?>
    
26.08.2017 / 16:50