当用户单击链接时如何运行 PHP 代码?

IT技术 php javascript html hyperlink anchor
2021-01-24 19:59:44

我想让一个页面在用户点击链接时运行一些 PHP 代码,而不是重定向它们。这可能与

<a href=""></a>

还是使用 javascript onclick 事件?

6个回答

是的,您需要有一个由 onclick 触发的 javascript 函数,该函数执行页面的 AJAX 加载,然后返回 false,这样它们就不会在浏览器中被重定向。如果您的项目可以接受,您可以在 jQuery 中使用以下内容:

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

如果您需要使用表单值(使用 $.post() 方法),您也可以进行回发。

@nasty 将其存储在会话变量中,或将其作为 url 的一部分传递。
2021-03-24 19:59:44
2 年后,现在我意识到是什么让这个答案如此好!
2021-03-26 19:59:44
您应该 prob 也应该从函数返回 false,因此不遵循 HREF。
2021-04-09 19:59:44
@Parrots:如果我想将 ID 传递给 somepage.php,我该如何实现?假设我将“a”链接更改为 onclick="doSomething(<?php echo $id ?>);" 以及如何将其传递给 php 页面?谢谢
2021-04-10 19:59:44

正如其他人所建议的那样,使用 JavaScript 进行 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

谢谢贾斯汀,修复了链接。我只是添加了 jquery 的链接,但没有添加实际代码,以防万一它不是一个选项。不是每个人都可以使用 Jquery,无论他们多么想(愚蠢的法律合同!)
2021-03-16 19:59:44
您至少应该在您的函数中添加非 jquery AJAX 代码示例,因为您只是在记录 javascript 的 onclick 功能,他已经知道了:P
2021-04-06 19:59:44
没有理由仅仅因为他没有使用 jQuery 就对他投反对票。不过,有人可能应该编辑帖子以修复链接。
2021-04-11 19:59:44

如果你还没有安装jquery(因为你只是一个初学者什么的),使用这段代码:

<a href="#" onclick="thisfunction()">link</a>

<script type="text/javascript">
function thisfunction(){
    var x = new XMLHttpRequest();
    x.open("GET","function.php",true);
    x.send();
    return false;
}
</script>
如果您不使用 jquery,您如何成为初学者?我喜欢使用 Javascript 而它不喜欢它,因为我很笨
2021-03-24 19:59:44
我想你是那个东西 :) haha​​ha
2021-04-03 19:59:44
事后看来,+1。我已经意识到 jQ 的冗余依赖有多大,尤其是看到 Web 标准已经走了多远。
2021-04-03 19:59:44

我知道这篇文章很旧,但我只是想添加我的答案!

你说在没有指导的情况下注销用户......这个方法确实重定向但它会将用户返回到他们所在的页面!这是我的实现:

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

我们走了!

从完整 url 获取文件名的代码不是错误证明。例如,如果查询字符串中包含未转义的“/”,它将失败。

但是有很多脚本可以从 url 获取文件名!

快乐编码!

亚历克斯

除非您使用 AJAX,否则当用户单击链接而不离开页面时,您无法运行 PHP。PHP 是一种服务器端脚本语言,意思是浏览器第二次看到页面,里面没有 PHP。

与 Javascript 不同,PHP 完全在服务器上运行,如果它在后端咬住它们,浏览器将不知道如何解释它。调用 PHP 代码的唯一方法是通过刷新页面或使用 javascript 获取页面来发出页面请求。

在 AJAX 解决方案中,基本上页面使用 javascript 将页面请求发送到您域中的另一个页面。Javascript 然后echo在响应中获取您决定的任何内容,它可以解析它并从那里做它想做的事情。创建响应时,您还可以执行任何后端操作,例如更新数据库。

PHP 仅在请求页面时运行。
2021-03-24 19:59:44
“除非您使用 AJAX,否则您无法在用户单击链接时运行 PHP。” 诶?
2021-03-29 19:59:44
正是我所说的。除非您请求新页面,否则您无法运行 PHP。
2021-03-29 19:59:44
好的,我修正了措辞。我认为他试图不离开页面是理所当然的,但我想有些人不想思考。
2021-04-09 19:59:44
是的,但是您可以请求一个没有 AJAX 的 PHP 页面。AJAX 只是让您无需离开您所在的页面即可请求它。您的措辞听起来像是PHP 的所有用途都需要 AJAX
2021-04-12 19:59:44