php - pasar - como funciona ajax



usando jquery $.ajax para llamar a una función de PHP (4)

Deberá exponer y punto final (URL) en su sistema, que aceptará la solicitud POST desde la llamada ajax en jQuery.

Luego, al procesar esa url de PHP, llamaría a su función y devolvería el resultado en el formato apropiado (JSON es más probable, o XML, si lo prefiere).

Esta puede ser una respuesta simple, pero estoy usando $ .ajax de jQuery para llamar a un script PHP. Lo que quiero hacer es básicamente poner ese script PHP dentro de una función y llamar a la función PHP desde javascript.

<?php 
if(isset($_POST['something'] {
    //do something
}
?>

a esto

<?php
function test() {
    if(isset($_POST['something'] {
         //do something. 
    }
}
?>

¿Cómo llamaría a esa función en javascript? En este momento solo estoy usando $ .ajax con el archivo PHP listado.


Desarrollé un complemento jQuery que le permite llamar a cualquier función central de PHP o incluso a funciones PHP definidas por el usuario como métodos del complemento: jquery.php

Después de incluir jquery y jquery.php en el encabezado de nuestro documento y colocar request_handler.php en nuestro servidor, comenzaríamos a usar el plugin de la manera que se describe a continuación.

Para facilitar el uso, consulte la función de forma sencilla:

    var P = $.fn.php;

A continuación, inicialice el complemento:

P('init', 
{
    // The path to our function request handler is absolutely required
    'path': 'http://www.YourDomain.com/jqueryphp/request_handler.php',

    // Synchronous requests are required for method chaining functionality
    'async': false,

    // List any user defined functions in the manner prescribed here
            // There must be user defined functions with these same names in your PHP
    'userFunctions': {

        languageFunctions: 'someFunc1 someFunc2'
    }
});             

Y ahora algunos escenarios de uso:

// Suspend callback mode so we don't work with the DOM
P.callback(false);

// Both .end() and .data return data to variables
var strLenA = P.strlen('some string').end();
var strLenB = P.strlen('another string').end();
var totalStrLen = strLenA + strLenB;
console.log( totalStrLen ); // 25

// .data Returns data in an array
var data1 = P.crypt("Some Crypt String").data();
console.log( data1 ); // ["$1$Tk1b01rk$shTKSqDslatUSRV3WdlnI/"]

Demostrando el encadenamiento de funciones de PHP:

var data1 = P.strtoupper("u,p,p,e,r,c,a,s,e").strstr([], "C,A,S,E").explode(",", [], 2).data();
var data2 = P.strtoupper("u,p,p,e,r,c,a,s,e").strstr([], "C,A,S,E").explode(",", [], 2).end();
console.log( data1, data2 );

Demostrando el envío de un bloque JSON de pseudocódigo PHP:

var data1 = 
        P.block({
    $str: "Let's use PHP's file_get_contents()!",
    $opts: 
    [
        {
            http: {
                method: "GET",
                header: "Accept-language: en\r\n" +
                        "Cookie: foo=bar\r\n"
            }
        }
    ],
    $context: 
    {
        stream_context_create: ['$opts']
    },
    $contents: 
    {
        file_get_contents: ['http://www.github.com/', false, '$context']
    },
    $html: 
    {
        htmlentities: ['$contents']
    }
}).data();
    console.log( data1 );

La configuración de back-end proporciona una lista blanca para que pueda restringir las funciones a las que se puede llamar. También hay algunos otros patrones para trabajar con PHP descritos por el complemento.


No puede llamar a una función de PHP con Javascript, de la misma manera que no puede llamar funciones PHP arbitrarias cuando carga una página (solo piense en las implicaciones de seguridad).

Si necesita ajustar su código en una función por cualquier razón, ¿por qué no pone una llamada de función bajo la definición de la función, por ejemplo:

function test() {
    // function code
}

test();

O bien, use un PHP incluye:

include 'functions.php'; // functions.php has the test function
test();

Puede usar mi biblioteca que lo hace automáticamente, lo he estado mejorando durante los últimos 2 años http://phery-php-ajax.net

Phery::instance()->set(array(
   'phpfunction' => function($data){
      /* Do your thing */
      return PheryResponse::factory(); // do your dom manipulation, return JSON, etc
   }
))->process();

El javascript sería tan simple como

phery.remote('phpfunction');

Puede pasar todas las partes dinámicas de javascript al servidor, con un generador de consultas como una interfaz encadenable, y puede pasar cualquier tipo de datos al PHP. Por ejemplo, algunas funciones que tomarían demasiado espacio en el lado de javascript podrían llamarse en el servidor usando esto (en este ejemplo, mcrypt, que en javascript sería casi imposible de lograr):

function mcrypt(variable, content, key){
  phery.remote('mcrypt_encrypt', {'var': variable, 'content': content, 'key':key || false});
}

//would use it like (you may keep the key on the server, safer, unless it's encrypted for the user)
window.variable = '';
mcrypt('variable', 'This must be encoded and put inside variable', 'my key');

y en el servidor

Phery::instance()->set(array(
  'mcrypt_encrypt' => function($data){
     $r = new PheryResponse;

     $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
     $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
     $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $data['key'] ? : 'my key', $data['content'], MCRYPT_MODE_ECB, $iv);
     return $r->set_var($data['variable'], $encrypted);
     // or call a callback with the data, $r->call($data['callback'], $encrypted);
  }
))->process();

Ahora la variable tendrá los datos encriptados.





ajax