2011-05-24 33 views
8

¿Cómo ejecuto una función de PHP dentro del evento jQuery click? Tengo lo siguiente que no es correcto. cuando el usuario hace clic en un botón, quiero que se cree un nuevo directamente.Ejecuta la función php dentro de jQuery haz clic en

$('button').click(function(){ 
    <?php mkdir('/test1/test2', 0777, true); ?> 
    return false; 
}) 
+1

posible duplicado de [php dentro de una función javascript?] (http://stackoverflow.com/questions/4729198/php-inside-a-javascript-function) –

+3

lejos muy lejos, muy lejos, muy lejos demasiado muchos engañados de la pregunta ... –

+1

@marc, el duplicado que publicaste no tiene nada que ver con la pregunta. Gracias a todos los que respondieron. – Pinkie

Respuesta

24

No puede ejecutar PHP dentro de una función jquery. PHP se ejecuta en el lado del servidor, mientras que jquery/javascript se ejecuta en el lado del cliente. Sin embargo, puede solicitar una página php usando jquery y con el código PHP en esa página ejecutar el mkdir que desee.

JS:

$.ajax({ 
    url: 'test.php', 
    success: function(data) { 
    alert('Directory created'); 
    } 
}); 

prueba.php del archivo:

<?php mkdir('/test1/test2', 0777, true); ?> 
1

JavaScript - Lado del cliente.

PHP - Lado del servidor.

Debe emitir una llamada AJAX de algún tipo para poder comunicarse con el Servidor. No hay forma de que JavaScript cree directorios en su Servidor Remoto (de lo contrario, esto sería un gran agujero de seguridad).

3

Aquí está mezclando el lado del cliente y el código del lado del servidor. El código PHP ya se ejecutó en el servidor cuando el usuario hace clic en el botón y, por lo tanto, no sucederá nada. Puede usar xmlhttprequest (o ajax) para esto.

1

que tiene que hacer:

//mkdir.php 

<?php mkdir('/test1/test2', 0777, true); ?> 

<script> 
$('button').click(function(){ $('#hidden').load('mkdir.php'); return false; }) 
</script> 

<div id='hidden' style='display:none;'></div> 
3

Sólo hacer una petición AJAX y luego ejecutar el lado del servidor PHP:

$('button').click(function(){ 
    $.ajax({url: 'mkdir.php'}); 
    return false; 
}) 

y el php:

<?php mkdir('/test1/test2', 0777, true); ?> 

Eso es todo lo que necesita.

2

¿Por qué no llamar a una función ajax en el lado del servidor? Se podría hacer algo como:

$('button').click(function() 
{ 
    $.ajax 
    ({ 
    type: "POST", 
    url: "some.php", 
    data: "val1:value&lvaln:valn", 
    success: function(msg) 
    { 
    alert("Data Saved: " + msg); 
    } 
    }); 
return false; 
}); 

Documentación here

Trate de no incrustar código php en html. Si puedes evitar esta práctica, mejor.

creo que sirve

8

En primer lugar usted debe entender cómo funciona PHP (sin ánimo de ofender, pero esto es esencial). Why PHP script is not workig in a web browser? para lograr lo que necesita tiene que usar ajax (para pedir una secuencia de comandos en el servidor usando javascript)

de archivos PHP (createdir.php):

<?php 
    mkdir('/test1/test2', 0777, true); 
?> 

Código JavaScript:

$('button').click(function() { 
    $.ajax({ 
     url: 'createdir.php', 
     success: function(){ 
      alert('dir created'); 
     } 
    }); 

    return false; 
}); 

No he validado si el código funciona correctamente.Si encuentra algún problema, debe consultar la documentación de jquery (es impresionante :-)) http://api.jquery.com/jQuery.ajax/

0

Puede beneficiarse enormemente de un marco que admite AJAX.

Como autor de Agile Toolkit puedo recomendar que lo pruebe, el código se vería así:

$button=$page->add('Button'); 
if($button->setLabel('Create Directory')->isClicked()){ 

    if(mkdir('/tmp/123', 0777, true)){ 
     $button->js()->univ()->alert('Directory Created'); // executes JS code 
    }else{ 
     $button->js()->univ()->alert('Problem'); // executes JS code 
    } 
} 

Otros marcos pueden ofrecer otras formas de simplificar AJAX y guardarla en un archivo.

-1

Amigo, primero que nada, entienda que jquery es un lenguaje de programación del lado del cliente que se ejecuta en los clientes browse y Php se ejecuta en el servidor web. Copie el código php en un archivo php y cree una solicitud al archivo php desde jquery

$.ajax(); 
Cuestiones relacionadas