2009-08-15 17 views

Respuesta

91

Sí, necesitaría tener una función javascript activada por un clic que hace una carga AJAX de una página y luego devuelve falso, de esa manera no serán redirigidos en el navegador. Se podría utilizar el siguiente en jQuery, si eso es aceptable para su proyecto:

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script> 

<a href="#" onclick="doSomething();">Click Me!</a> 

También podría hacer un post-vuelta si es necesario utilizar valores de la forma (usar el método $ .post()).

+6

debe prob también devolver falso de la función, por lo que no se sigue el HREF. –

+5

2 años después, ahora me doy cuenta de lo que hace que esta sea una buena respuesta. – chustar

+2

@Parrots: si quiero pasar una identificación a somepage.php, ¿cómo podría lograr esto? Digamos que cambio el enlace "a" a onclick = "doSomething ();" y ¿cómo puedo pasarlo a la página php? Gracias – nasty

4

No puede ejecutar PHP cuando un usuario hace clic en un enlace sin abandonar la página a menos que utilice AJAX. PHP es un lenguaje de scripting en el servidor, es decir, el segundo que el navegador ve la página, no tiene PHP.

A diferencia de Javascript, PHP se ejecuta completamente en el servidor, y el navegador no sabría cómo interpretarlo si los mordiera en la parte posterior. La única forma de invocar el código PHP es hacer una solicitud de página, ya sea refrescando la página o usando javascript para ir a buscar una página.

En una solución AJAX, básicamente la página usa javascript para enviar una solicitud de página a otra página en su dominio. Entonces, Javascript obtiene lo que usted decida echo en la respuesta, y puede analizarlo y hacer lo que quiera desde allí. Cuando está creando la respuesta, también puede hacer cualquier cosa de back-end, como actualizar las bases de datos.

+1

"No puede ejecutar PHP cuando un usuario hace clic en un enlace a menos que use AJAX." ¿Eh? –

+0

Exactamente lo que dije. A menos que solicite una nueva página, no puede ejecutar PHP. –

+1

PHP solo se ejecuta cuando se solicitan páginas. –

10

Como han sugerido otros, use JavaScript para hacer una llamada AJAX.

<a href="#" onclick="myJsFunction()">whatever</a> 

<script> 
function myJsFunction() { 
    // use ajax to make a call to your PHP script 
    // for more examples, using Jquery. see the link below 
    return false; // this is so the browser doesn't follow the link 
} 

http://docs.jquery.com/Ajax/jQuery.ajax

+1

No hay razón para menospreciar al tipo solo porque no usó jQuery. Alguien debería editar la publicación para arreglar el enlace. –

+0

Gracias justin, corrigió el enlace. Acabo de agregar el enlace a jquery, pero no el código real en caso de que no fuera una opción. No todos pueden usar Jquery, sin importar cuánto quieran (¡contratos legales estúpidos!) –

+0

Al menos debe agregar el ejemplo de código AJAX no jquery dentro de su función, ya que solo está documentando la funcionalidad onclick de javascript , que ya conocía: P – Parrots

0

o bien enviar al usuario a otra página, que lo hace

<a href="exec.php">Execute PHP</a> 

o hacerlo con ajax

<script type="text/javascript"> 
// <![CDATA[ 
    document.getElementById('link').onclick = function() { 
     // call script via ajax... 
     return false; 
    } 
// ]]> 
</script> 
... 
<a href="#" id="link">Execute PHP</a> 
1

No es la única mejor manera es AJAX todos son sugerencias en sus publicaciones. La alternativa es usar IFrames, como a continuación:

<iframe name="f1" id="f1"> </iframe> 

<a href='yourpage.php' target='f1'>Click </a> 

Ahora se va a obtener la salida en el marco flotante (se puede colocar IFrame siempre que se necesite en la página o evento ocultarlo y el resultado de la secuencia de comandos).

Espero que la solución no Ajax sea mejor.

-1

Esto debería funcionar así

<a href="#" onclick="callFunction();">Submit</a> 

<script type="text/javascript"> 

function callFunction() 
{ 
    <?php require("functions.php"); ?> 
} 
</script> 

Gracias,

cowtipper

+1

¿Cómo podría un php require() desencadenarse desde un clic de JavaScript? – billrichards

3

Sé que este post es viejo, pero yo sólo quería añadir mi respuesta!

Dijiste que registrabas a un usuario SIN dirigir ... ¡este método SI redirige pero devuelve al usuario a la página en la que estaba!aquí está mi implementación:

// every page with logout button 
<?php 
     // get the full url of current page 
     $page = $_SERVER['PHP_SELF']; 
     // find position of the last '/' 
     $file_name_begin_pos = strripos($page, "/"); 
     // get substring from position to end 
     $file_name = substr($page, ++$fileNamePos); 
    } 
?> 

// the logout link in your html 
<a href="logout.php?redirect_to=<?=$file_name?>">Log Out</a> 

// logout.php page 
<?php 
    session_start(); 
    $_SESSION = array(); 
    session_destroy(); 
    $page = "index.php"; 
    if(isset($_GET["redirect_to"])){ 
     $file = $_GET["redirect_to"]; 
     if ($file == "user.php"){ 
      // if redirect to is a restricted page, redirect to index 
      $file = "index.php"; 
     } 
    } 
    header("Location: $file"); 
?> 

y ahí vamos!

el código que obtiene el nombre de archivo de la url completa no es a prueba de errores. por ejemplo, si las cadenas de consulta están involucradas con '/' sin escape en ellas, fallará.

¡Sin embargo, hay muchos scripts para obtener el nombre de archivo de url!

Happy Coding!

Alex

2

Bien se dijo sin redirigir. Bien es un código javascript:

<a href="JavaScript:void(0);" onclick="function()">Whatever!</a> 

<script type="text/javascript"> 
function confirm_delete() { 
    var delete_confirmed=confirm("Are you sure you want to delete this file?"); 

    if (delete_confirmed==true) { 
     // the php code :) can't expose mine ^_^ 
    } else { 
     // this one returns the user if he/she clicks no :) 
     document.location.href = 'whatever.php'; 
    } 
} 
</script> 

darle una oportunidad :) espero que les guste

+2

por cierto éste whatever

  • 11. Ocultar en el teclado iOS cuando el usuario hace clic fuera de un cuadro de texto
  • 12. ¿Cómo cerrar un JDialog modal cuando el usuario hace clic fuera de JDialog?
  • 13. JavaScript Agregar clase cuando se hace clic Enlace
  • 14. maneja el error ajax cuando un usuario hace clic en actualizar
  • 15. stop mouseleave cuando se hace clic en un objeto
  • 16. Javascript: simular un clic en un enlace
  • 17. WPF - Establecer el enfoque cuando se hace clic en un botón - Sin código detrás
  • 18. ¿Cómo establecer un enlace en el Código?
  • 19. IE se minimiza al azar cuando se hace clic en un enlace
  • 20. ¿Cómo crear un formulario HTML con "instrucciones" precargadas que se borran cuando un usuario hace clic en el cuadro?
  • 21. jQuery - Incremente el valor de un contador cuando se hace clic en un botón
  • 22. Cómo confirmar haciendo clic en un enlace usando jQuery
  • 23. Reproducir un sonido cuando se hace clic en Android
  • 24. ¿Cómo saber qué enlace se hace clic en un globo después de manejar el mensaje TTN_LINKCLICK?
  • 25. Acceda al estado del historial de la página anterior cuando un usuario hace clic en 'volver'
  • 26. Cómo cambio el color de fondo de un cuadro de texto cuando el usuario hace clic en él con CSS
  • 27. ¿Cómo puedo forzar que un ComboBox estilo DropDownList solo se abra cuando el usuario hace clic en el botón desplegable?
  • 28. Cómo forzar LostFocus cuando se hace clic en el botón
  • 29. Cómo poner la aplicación Java en Systemtray cuando el usuario hace clic en Cerrar ventanas
  • 30. ¿Cómo simulo que un usuario haga clic en un enlace en JQuery?