我正在寻找一种仅单击a-tag即可调用PHP函数的简单解决方案。
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
更新: html和PHP代码在同一个PHP文件中
我正在寻找一种仅单击a-tag即可调用PHP函数的简单解决方案。
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
更新: html和PHP代码在同一个PHP文件中
<a role="button" href="?action=removeday" class="debatebtn">Delete</a>
捕获动作并运行类似于的removeday()函数,则选中的答案将看起来像一个按钮if($action == 'removeday'){ removeday(); }
。我知道这很晚,但是我认为它仍然可以帮助某人解决此问题。C§
Answers:
首先,请了解您有三种语言一起使用:
PHP:它仅由服务器运行,并响应诸如单击链接(GET)或提交表单(POST)之类的请求。
HTML和JavaScript:它只能在某人的浏览器中运行(NodeJS除外)。
我假设您的文件如下所示:
<!DOCTYPE HTML>
<html>
<?php
function runMyFunction() {
echo 'I just ran a php function';
}
if (isset($_GET['hello'])) {
runMyFunction();
}
?>
Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>
由于PHP仅响应请求(通过$ _REQUEST进行的GET,POST,PUT,PATCH和DELETE),因此即使它们在同一文件中,这也是运行PHP函数的方式。这为您提供了一定程度的安全性,“是否应该为此用户运行此脚本?”。
如果您不想刷新页面,则可以通过称为异步JavaScript和XML(AJAX)的方法向PHP发出请求而无需刷新。
那是您可以在YouTube上查找的内容。只需搜索“ jquery ajax”
我向任何新手推荐Laravel,以立即开始:http://laravel.com/
If you don't want to refresh the page, you can make a request to PHP without refreshing via a method called Asynchronous JavaScript and XML (AJAX).
好吧,他的确包含onclick
了这个问题,因此很明显,目标是不刷新就执行一个动作。¬_¬
在javascript中,制作ajax函数,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
然后从html调用
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
在您的ajax.php中,
if($_POST['action'] == 'call_this') {
// call removeday() here
}
type
应该在1.9.0之前的jQuery中使用,而这method
是一个别名,应该在较新的版本上使用。
您将必须通过AJAX进行此操作。我强烈建议您使用jQuery,以使其更容易...。
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};
无需重新加载页面的解决方案
<?php
function removeday() { echo 'Day removed'; }
if (isset($_GET['remove'])) { return removeday(); }
?>
<!DOCTYPE html><html><title>Days</title><body>
<a href="" onclick="removeday(event)" class="deletebtn">Delete</a>
<script>
async function removeday(e) {
e.preventDefault();
document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text();
}
</script>
</body></html>
这是最简单的方法。如果表单是通过post发布的,请执行php函数。请注意,如果您要异步执行功能(无需重新加载页面),则需要AJAX。
<form method="post">
<button name="test">test</button>
</form>
<?php
if(isset($_POST['test'])){
//do php stuff
}
?>
Note that if you want to perform function asynchronously (without the need to reload the page), then you'll need AJAX.
好吧,onclick
这表明他正是想要的。¬_¬
这是AJAX的替代方案,但没有jQuery,只有普通的JavaScript:
将此添加到您要从其调用操作的第一个/主php页面,但将其从潜在a
标记(超链接)更改为button
元素,这样它就不会被任何机器人或恶意应用(或其他任何东西)点击。
<head>
<script>
// function invoking ajax with pure javascript, no jquery required.
function myFunction(value_myfunction) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("results").innerHTML += this.responseText;
// note '+=', adds result to the existing paragraph, remove the '+' to replace.
}
};
xmlhttp.open("GET", "ajax-php-page.php?sendValue=" + value_myfunction, true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php $sendingValue = "thevalue"; // value to send to ajax php page. ?>
<!-- using button instead of hyperlink (a) -->
<button type="button" onclick="value_myfunction('<?php echo $sendingValue; ?>');">Click to send value</button>
<h4>Responses from ajax-php-page.php:</h4>
<p id="results"></p> <!-- the ajax javascript enters returned GET values here -->
</body>
当button
被点击时,onclick
使用的head's JavaScript函数来发送$sendingValue
通过AJAX到另一个PHP页面,像这样的人之前的例子很多。另一页,ajax-php-page.php
检查GET值并返回print_r
:
<?php
$incoming = $_GET['sendValue'];
if( isset( $incoming ) ) {
print_r("ajax-php-page.php recieved this: " . "$incoming" . "<br>");
} else {
print_r("The request didn´t pass correctly through the GET...");
}
?>
print_r
然后返回的响应并显示为
document.getElementById("results").innerHTML += this.responseText;
将+=
填充并增加了现有的HTML元素,除去+
刚刚更新和替换HTML的现有内容p
元素"results"
。
试试这个,它将正常工作。
<script>
function echoHello(){
alert("<?PHP hello(); ?>");
}
</script>
<?PHP
FUNCTION hello(){
echo "Call php function on onclick event.";
}
?>
<button onclick="echoHello()">Say Hello</button>