当用户点击链接时,我希望一个页面运行一些 PHP 代码,而不将用户重定向。这是否可能?
<a href=""></a>
或者使用 JavaScript 的 onclick 事件?
当用户点击链接时,我希望一个页面运行一些 PHP 代码,而不将用户重定向。这是否可能?
<a href=""></a>
或者使用 JavaScript 的 onclick 事件?
要实现这个功能,你需要编写一个JavaScript函数,并在onclick事件触发时加载一个页面并返回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-back),使用 $.post() 方法即可。
正如其他人建议的那样,使用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
}
如果您还没有安装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>
我知道这篇文章很旧,但我想添加我的答案!
你说要让用户注销而不进行重定向... 这种方法确实会重定向,但它会将用户返回到他们之前浏览的页面!这是我的实现:
// 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中获取文件名!
祝编程愉快!
Alex
如果不使用 AJAX,用户点击链接时就不能在页面上运行 PHP。PHP 是一种服务器端脚本语言,在浏览器看到页面之后,其中就没有 PHP 了。
与 Javascript 不同,PHP 完全在服务器上运行,如果它们被咬了一口,浏览器就无法解释它。唯一调用 PHP 代码的方法是通过发出页面请求,要么刷新页面,要么使用 JavaScript 获取页面。
在 AJAX 解决方案中,页面基本上使用 JavaScript 向您域上的另一个页面发送页面请求。然后,JavaScript 获取您在响应中决定使用 echo
的任何内容,并可以解析它并从那里执行所需操作。在创建响应时,您还可以执行任何后端操作,例如更新数据库。
你说过不需要重定向,那么这是一个 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>
试一试吧 :) 希望你喜欢它
目前唯一更好的方法是使用AJAX,正如其他人在帖子中所建议的那样。 另一种选择是使用如下的IFrames:
<iframe name="f1" id="f1"> </iframe>
<a href='yourpage.php' target='f1'>Click </a>
现在您将在IFrame中获取输出(您可以在页面上放置IFrame或隐藏它,并从脚本中获取结果)。
希望无需Ajax解决方案,这会更好。
<a href='javascript:void(0)' id='yourId'>Click Me</a>
$(document).ready(function() {
$("#yourId").click(function() {
$.get("yourpage.php");
return false;;
});
});
<a href="exec.php">Execute PHP</a>
或者使用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>
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
{
<?php require("functions.php"); ?>
}
</script>
谢谢,
cowtipper