2009-08-15 13 views

Odpowiedz

91

Tak, potrzebowałbyś mieć funkcję javascript wywołaną przez onclick, który ładuje stronę AJAX, a następnie zwraca wartość false, w ten sposób nie zostaną przekierowani w przeglądarce. Można użyć następujących w jQuery, jeśli jest to dopuszczalne dla danego projektu:

<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> 

można również zrobić post-tył, jeśli chcesz użyć wartości forma (użyć metody $ .post()).

+6

powinieneś także zwrócić false z funkcji, więc HREF nie jest przestrzegane. –

+5

Dwa lata później, teraz rozumiem, co sprawia, że ​​jest to tak dobra odpowiedź! – chustar

+2

@Parrots: jeśli chcę przekazać identyfikator do strony somepage.php, w jaki sposób mogę to osiągnąć? Powiedzmy, że zmienię link "a" na onclick = "doSomething ();" i jak mogę przekazać to na stronę php? Dzięki – nasty

4

Nie można uruchomić PHP, gdy użytkownik kliknie na link bez opuszczania strony, chyba że korzystasz z AJAX. PHP jest językiem skryptowym na serwerze, co oznacza, że ​​przeglądarka widzi stronę, nie ma w niej PHP.

W odróżnieniu od JavaScript, PHP jest uruchamiane całkowicie na serwerze, a przeglądarka nie wiedziałaby, jak to zinterpretować, jeśli ugryzłaby je z tyłu. Jedynym sposobem na wywołanie kodu PHP jest zrobienie żądania strony, odświeżenie strony lub użycie javascript do pobrania strony.

W rozwiązaniu AJAX zasadniczo strona korzysta z javascript, aby wysłać żądanie strony na inną stronę w domenie. JavaScript następnie dostaje wszystko, co zdecydujesz się na echo w odpowiedzi, i może go parsować i robić to, co chce stamtąd. Podczas tworzenia odpowiedzi można również wykonywać dowolne operacje na zapleczu, takie jak aktualizowanie baz danych.

+1

"Nie możesz uruchomić PHP, gdy użytkownik kliknie na link, chyba że używasz AJAX." Eh? –

+0

Dokładnie to, co powiedziałem. O ile nie zażądasz nowej strony, nie możesz uruchomić PHP. –

+1

PHP jest uruchamiane tylko wtedy, gdy są żądane strony. –

10

Jak sugerowali inni, użyj JavaScript, aby wykonać połączenie 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

Nie ma powodu, by zgadywać faceta tylko dlatego, że nie używał jQuery. Ktoś prawdopodobnie powinien edytować post, aby naprawić link. –

+0

Dzięki Justin, poprawiono link. Właśnie dodałem link do jquery, ale nie rzeczywisty kod na wszelki wypadek, gdyby nie była opcja. Nie wszyscy mogą używać Jquery'ego, bez względu na to, jak bardzo chcą (głupie prawne umowy!). –

+0

Powinieneś przynajmniej dodać przykład kodu AJAX, który nie jest jquery w twojej funkcji, ponieważ właśnie dokumentujesz funkcje onclick javascript , o którym już wiedział: P – Parrots

0

albo wysłać użytkownika do innej strony, która to robi

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

lub zrobić z 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

Jest jedynym Lepszym sposobem jest AJAX jako wszyscy są sugerowani w swoich postach. Alternatywą jest użycie ramek jak poniżej:

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

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

Teraz dostaniesz wyjście w IFrame (IFrame można umieścić wszędzie tam, gdzie trzeba na stronie imprezy lub ukryć go i wynik ze skryptu).

Nadzieja na rozwiązanie nie Ajaxowe jest lepsze.

-1

To powinno działać jak dobrze

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

<script type="text/javascript"> 

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

Dzięki,

cowtipper

+1

Jak można wywołać php require() z kliknięcia javascript? – billrichards

3

Znam ten post jest stary, ale chciałem tylko dodać moją odpowiedź!

Powiedziałeś, że logujesz użytkownika BEZ kierowania ... ta metoda przekierowuje, ale zwraca użytkownika na stronę, na której był!oto moja realizacja:

// 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"); 
?> 

i tam iść!

kod, który pobiera nazwę pliku z pełnego adresu URL, nie jest odporny na błędy. na przykład, jeśli ciągi zapytań są powiązane z nieumarłem "/" w nich, to się nie powiedzie.

Istnieje jednak wiele skryptów, aby uzyskać nazwę pliku z adresu URL!

Happy Coding!

Alex

2

Cóż powiedziałeś bez przekierowania. Dobrze jej kod 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> 

spróbować :) nadzieję, że lubisz to

+2

przy okazji ten whatever