是否可以将html按钮onclick属性的值传递给php函数



我现在正在做一个项目,遇到了一个问题。我正在尝试下面的代码。。。。

<button onclick = 'Remove(<?php echo $uid ?>,<?php echo $name ?>,<?php echo $total ?>)' type="submit">Remove</button>

这是我用来将值传递给php函数的,下面的代码是php中的函数。

function Remove($id,$name,$total){
include('dbconnect.php');
$q = "DELETE FROM `cart` WHERE `uid` = $id AND `Name`= '$name'";
$r = mysqli_query($connect, $q);
if($r == TRUE){
Updatedcart($id,$total);
}
}

有人能帮我解决这个问题吗。。。。。

简短回答:无

较长的回答:是的,但不是你尝试过的方式。

您可以通过将按钮包装为表单:来实现所需的结果

<form method="post">
<input type="submit" name="button_submit" value="Remove"/>
</form>
<?php
if(array_key_exists('button_submit', $_POST)) { 
Remove($uid, $name, $total); 
} 
?>

这将在表单提交和页面更新后调用Remove函数。但是,如果您想在不刷新页面的情况下调用该方法,那么我建议您查看Ajax发布请求

是的,这是可能的。但在我们深入研究细节之前,重要的是要知道您的Javascript在浏览器中运行,PHP在服务器上运行,这两台计算机可能是相距遥远的独立计算机。

因此,为了将JS值传递给PHP函数,您需要从浏览器向服务器发送一个请求,这本质上是一条技术消息。在服务器上,您需要接收请求并调用PHP函数,完成所有这些操作后,服务器最终会向浏览器发送一条消息作为对请求的响应。这通常是在HTTP(超文本传输协议(协议中完成的,或者更好地,在HTTPS协议中,S代表"HTTP";"安全";。

发送请求

您可以使用表单或AJAX请求从浏览器发送请求。如果您使用表单来实现此目的,那么您需要在该表单中有一个元素,该元素具有name属性,该属性将表示用于标识值的键。如果您发送AJAX请求,那么您将需要根据您可以在互联网上的许多地方阅读的标准来传递参数。您还需要确保您的服务器为您的请求发送到的目标提供服务。

识别参数值

根据您的请求方法,您将能够通过$_GET["paramname"]$_POST["paramname"]检测服务器上的参数值。

调用函数

假设参数值存储在一个变量中,如$myparam,则可以将函数调用为

yourfunction($myparam)

并且您已经将参数传递给了PHP函数。

WebSocket

或者,您可以使用WebSockets,它是双工通道,但在此之前,您可能需要通过表单和AJAX研究HTTP请求。

这取决于您是否想要:

  1. 导航到另一个脚本/页面
  2. 将变量传递给脚本而不重新加载页面

无论哪种方式,我们都可以使用GET超全局。对于第二种方法,您还可以使用POST超全局。

后端:PHP

include('dbconnect.php');
// Use these if GET method was used
$uid   = $_GET["uid"]   ?? NULL;
$name  = $_GET["name"]  ?? NULL;
$total = $_GET["total"] ?? NULL;
// Use these if POST method was used
# $uid   = $_POST["uid"]   ?? NULL;
# $name  = $_POST["name"]  ?? NULL;
# $total = $_POST["total"] ?? NULL;
// Check values were submitted
if( $uid && $name && $total){
$sql   = "DELETE FROM `cart` WHERE `uid` = ? AND `name`= ?";
$query = $mysqli->prepare($sql);
$query->bind_param("is", $uid, $name);
$query->execute();
// Check something was deleted
if( $mysqli->affected_rows ){
Updatedcart($id, $total);
}
}
else {
echo "Nothing submitted";
}

前端:GET:方法1.1

将您的按钮更改为a标签:

<a href="/scriptPage.php?uid=<?=$uid?>&name=<?=$name?>&total=<?=$total?>">Remove</a>

前端:GET:方法1.2.1

<form method="GET" action="scriptPage.php">
<input type="hidden" value="<?=$uid?>"   name="uid">
<input type="hidden" value="<?=$name?>"  name="name">
<input type="hidden" value="<?=$total?>" name="total">
<input type="submit" value="Remove">
</form>

前端:POST:方法1.2.2

<form method="POST" action="scriptPage.php">
<input type="hidden" value="<?=$uid?>"   name="uid">
<input type="hidden" value="<?=$name?>"  name="name">
<input type="hidden" value="<?=$total?>" name="total">
<input type="submit" value="Remove">
</form>

前端:GET:方法2.1

<button  type="button" onclick='remove_item(<?=$uid?>, <?=$name?>,<?=$total?>)'>Remove</button>
function remove_item(id, name, total){
// Create the HTTP Request object
var xhr = new XMLHttpRequest();
// Set connection parameters and query string
xhr.open('GET', "scriptPage.php?uid="+id+"&name="+name+"&total="+total);
// Handle success
xhr.onload = function(){        
if(this.status == 200){
// Do something
}
};
// Send request
xhr.send(); 
}

前端:POST:方法2.2

<button  type="button" onclick='remove_item(<?=$uid?>, <?=$name?>,<?=$total?>)'>Remove</button>
function remove_item(id, name, total){
// Create the HTTP Request object
var xhr = new XMLHttpRequest();
// Set connection parameters and query string
xhr.open('POST', "scriptPage.php");
// Handle success
xhr.onload = function(){        
if(this.status == 200){
// Do something
}
};
// Set content type
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
// Send request
xhr.send(
"uid="    + id +
"&name="  + name +
"&total=" + total
);
}