Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/08/2017, 16:47
Avatar de Thejuanjo
Thejuanjo
 
Fecha de Ingreso: mayo-2014
Mensajes: 28
Antigüedad: 10 años
Puntos: 2
Respuesta: Ejecutar función php desde ajax - jquery

Hola amigo, si he entendido bien, quieres poner todas las funciones en un archivo, vamos a llamarlo "funciones.php".

Vamos a ir paso por paso.
Primero vamos a definir el archivo "funciones.php"

Código PHP:
//Definimos todas las funciones
//funciones de ejemplo

function funcion_1(){
global ....

}

function 
funcion_2($id,$count....){
global ....

}

....

//Ahora es el momento de llamar a las funciones

if(isset($_GET['funcion']) && !empty($_GET['funcion'])){//comprobamos que exista ese GET y que no este vacío.
$funcion intval($_GET['funcion']); //Asignamos una variable a su contenido y de paso comprobamos que sólo sea numérica.

if($funcion == 1){funcion_1();}
else if(
$funcion == 2){funcion_2(1,0...);
else if(
$funcion == 3){funcion_3();}
....


Ahora vamos con el js:
Código Javascript:
Ver original
  1. var manageMemberTable;
  2.  
  3. $(document).ready(function () {
  4.  
  5.     manageMemberTable = $("#manageMemberTable").DataTable({
  6.         "ajax": "php_action/funciones.php?funcion=1",
  7.         "order": []
  8.     });
  9.  
  10.     $("#addMemberModalBtn").on('click', function () {
  11.         // reset the form
  12.         $("#createMemberForm")[0].reset();
  13.         // remove the error
  14.         $(".form-group").removeClass('has-error').removeClass('has-success');
  15.         $(".text-danger").remove();
  16.         // empty the message div
  17.         $(".messages").html("");
  18.  
  19.         // submit form
  20.         $("#createMemberForm").unbind('submit').bind('submit', function () {
  21.  
  22.             $(".text-danger").remove();
  23.  
  24.             var form = $(this);
  25.  
  26.             // validation
  27.             var name = $("#name").val();
  28.             var address = $("#address").val();
  29.             var contact = $("#contact").val();
  30.             var active = $("#active").val();
  31.  
  32.             if (name === "") {
  33.                 $("#name").closest('.form-group').addClass('has-error');
  34.                 $("#name").after('<p class="text-danger">The Name field is required</p>');
  35.             } else {
  36.                 $("#name").closest('.form-group').removeClass('has-error');
  37.                 $("#name").closest('.form-group').addClass('has-success');
  38.             }
  39.  
  40.             if (address === "") {
  41.                 $("#address").closest('.form-group').addClass('has-error');
  42.                 $("#address").after('<p class="text-danger">The Address field is required</p>');
  43.             } else {
  44.                 $("#address").closest('.form-group').removeClass('has-error');
  45.                 $("#address").closest('.form-group').addClass('has-success');
  46.             }
  47.  
  48.             if (contact === "") {
  49.                 $("#contact").closest('.form-group').addClass('has-error');
  50.                 $("#contact").after('<p class="text-danger">The Contact field is required</p>');
  51.             } else {
  52.                 $("#contact").closest('.form-group').removeClass('has-error');
  53.                 $("#contact").closest('.form-group').addClass('has-success');
  54.             }
  55.  
  56.             if (active === "") {
  57.                 $("#active").closest('.form-group').addClass('has-error');
  58.                 $("#active").after('<p class="text-danger">The Active field is required</p>');
  59.             } else {
  60.                 $("#active").closest('.form-group').removeClass('has-error');
  61.                 $("#active").closest('.form-group').addClass('has-success');
  62.             }
  63.  
  64.             if (name && address && contact && active) {
  65.                 //submi the form to server
  66.                 $.ajax({
  67.                     url: form.attr('action'),
  68.                     type: form.attr('method'),
  69.                     data: form.serialize(),
  70.                     dataType: 'json',
  71.                     success: function (response) {
  72.  
  73.                         // remove the error
  74.                         $(".form-group").removeClass('has-error').removeClass('has-success');
  75.  
  76.                         if (response.success === true) {
  77.                             $(".messages").html('<div class="alert alert-success alert-dismissible" role="alert">' +
  78.                                     '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' +
  79.                                     '<strong> <span class="glyphicon glyphicon-ok-sign"></span> </strong>' + response.messages +
  80.                                     '</div>');
  81.  
  82.                             // reset the form
  83.                             $("#createMemberForm")[0].reset();
  84.  
  85.                             // reload the datatables
  86.                             manageMemberTable.ajax.reload(null, false);
  87.                             // this function is built in function of datatables;
  88.  
  89.                         } else {
  90.                             $(".messages").html('<div class="alert alert-warning alert-dismissible" role="alert">' +
  91.                                     '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' +
  92.                                     '<strong> <span class="glyphicon glyphicon-exclamation-sign"></span> </strong>' + response.messages +
  93.                                     '</div>');
  94.                         }  // /else
  95.                     } // success  
  96.                 }); // ajax subit              
  97.             } /// if
  98.  
  99.  
  100.             return false;
  101.         }); // /submit form for create member
  102.     }); // /add modal
  103.  
  104. });

y lo mismo con la otra funcion, pero le pones ?funcion=2

Por cierto, hay una cosa que siempre jode cuando actualizas archivos, y es el caché, te lo digo por experiencia, si no notas un cambio, borra el cache entero o prueba desde otro navegador, incluso puedes tirar del modo incognito, aunque este último no es muy fiable, porque a veces también almacena y tira del cache.

Consejo: Si lo que quieres es que se ejecute rápidamente (en milisegundos), en vez de definir todas las funciones antes de ser llamadas, te recomendaría que definieses todas las funciones dentro de los if correspondientes, es decir:
Código PHP:
 if(funcion == 1){function funcion_1(){...} funcion_1();} 
Aunque de la manera inicial que te he puesto, tampoco vas a tener problemas de rendimiento.

Un saludo.

Última edición por Thejuanjo; 20/08/2017 a las 16:57