当用户点击链接时,我想让页面运行一些PHP代码,而不重定向它们。是否可以
<a href=""></a>
或使用javascript onclick事件?
答案 0 :(得分:97)
是的,你需要有一个由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()方法)。
答案 1 :(得分:10)
正如其他人所建议的那样,使用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
}
答案 2 :(得分:5)
如果你还没有安装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>
答案 3 :(得分:4)
除非您使用AJAX,否则当用户点击链接而不离开页面时,您无法运行PHP。 PHP是一种服务器端脚本语言,这意味着浏览器第二次看到页面,其中没有PHP。
与Javascript不同,PHP完全在服务器上运行,如果它位于后面,浏览器将不知道如何解释它。调用PHP代码的唯一方法是通过刷新页面或使用javascript来获取页面来发出页面请求。
在AJAX解决方案中,基本上该页面使用javascript将页面请求发送到您域中的另一个页面。然后,Javascript会在响应中获得您决定echo
的任何内容,并且它可以解析它并从那里执行它想要的操作。在创建响应时,您还可以执行任何后端操作,例如更新数据库。
答案 4 :(得分:4)
我知道这篇文章很老但我只是想补充一下我的答案!
你说要在没有指示的情况下记录用户...这个方法是重定向但它会将用户返回到他们所在的页面!这是我的实施:
// 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获取文件名!
快乐的编码!
亚历
答案 5 :(得分:2)
嗯,你说没有重定向。好吧它的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>
试一试:)希望你喜欢它
答案 6 :(得分:1)
唯一更好的方法是AJAX,因为每个人都在帖子中提出建议。 替代方案是使用如下的IFrame:
<iframe name="f1" id="f1"> </iframe>
<a href='yourpage.php' target='f1'>Click </a>
现在您将获得IFrame中的输出(您可以在页面或事件中的任何位置放置IFrame,并将其隐藏在脚本中)。
希望非Ajax解决方案更好。
答案 7 :(得分:0)
将用户发送到另一个页面
<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>
答案 8 :(得分:0)
<a href='javascript:void(0)' id='yourId'>Click Me</a>
$(document).ready(function() {
$("#yourId").click(function() {
$.get("yourpage.php");
return false;;
});
});
答案 9 :(得分:-1)
这应该也适用
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
{
<?php require("functions.php"); ?>
}
</script>
谢谢,
cowtipper