我的html表单有一个选择选项。在我从选项更改数据并提交数据后,将运行Mysql查询。我想要的是,在从select中选择数据之后,它将重新加载并将值传递给php代码。
这是html
<form action='a.php?'>
<SELECT name="client_id" ID="mySelect">
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
<input type="submit" name="chooseclient" value="Select">
</form>
这里是提交后运行的php
if(isset($_POST['chooseclient'])){
$clientid = mysqli_real_escape_string($mysqli, $_POST['client_id']);
MYSQL query here
}
我试过这个。类型submit(),但它不发送数据。我知道我需要学习Ajax。是否有任何方法可以重新更改表单并将数据传递给php?
如果要在字段值更改时由Ajax自动将选定的值发送到a.php,可以使用以下代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
</head>
<body>
<form action='a.php?'>
<SELECT name="client_id" ID="mySelect">
<option value="A1>'">A1</option>
<option value="A2">A2</option>
<option value="A3">A3</option>
</SELECT>
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#mySelect").change(function(){
var value =$("#mySelect").val();
alert(value);
$.ajax({
url: 'a.php',
type: "POST",
data: ({chooseclient: value}),
success: function(){
location.reload();
}
});
});
});
</script>
</body>
如果您不希望页面在发送信息并保存到数据库后重新加载,请注释它location.reload();
a.php
:
<?php
if(isset($_POST['chooseclient'])){
$clientid = mysqli_real_escape_string($mysqli, $_POST['chooseclient']);
#MYSQL query here
# do something
}
要实现你所期望的,你必须做一点javascript。据我所知,您不需要发送ajax请求,因为您要求表单在提交时重新加载。但我会给你两种方法。
没有AJAX
首先,我们将在表单中添加一个id。在我的例子中,它将是“我的形式”。和一个onChange事件到您的选择,将调用myFunction();。我们还必须告诉您的表单,以发布当前PHP脚本的数据,否则它将作为获取发送
<form id="my-form" action='a.php?' method="post">
<SELECT onchange="myFunction()" name="client_id" ID="mySelect">
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
<input type="submit" name="chooseclient" value="Select">
</form>
现在,在javascript文件或脚本标记之间添加函数:
<script>
function myFunction(){
document.getElementById("my-form").submit();
}
</script>
现在,当您更改select的值时,表单应自行提交。但你会有另一个问题。
if(isset($_POST['chooseclient'])){
$clientid = mysqli_real_escape_string($mysqli, $_POST['client_id']);
//MYSQL query here
}
当您通过javascript提交表单时,您的提交按钮将不会和其余数据一起发送。所以if(isset($\u POST['chooseclient'])
永远不会为真。要解决这个问题,您有几个选择,我给您两个:
您可以更改PHP以检查client_id(如果这样做,您可以完全删除提交按钮):
if(isset($_POST['client_id'])){
$clientid = mysqli_real_escape_string($mysqli, $_POST['client_id']);
//MYSQL query here
}
或将“提交”按钮更改为隐藏字段:
<form id="my-form" action='a.php'>
<SELECT onchange="myFunction()" name="client_id" ID="mySelect">
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
<input type="hidden" name="chooseclient" value="Select">
</form>
阿贾克斯
与第一种方法一样,我们将在表单中添加一个id,在选择中添加一个onchange事件。您还应删除提交按钮或将其更改为隐藏字段,在本例中,我将删除它:
<form id="my-form" action='a.php'>
<SELECT onchange="myFunction()" name="client_id" ID="mySelect">
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
</form>
而脚本wich将与第一个完全不同:
<script>
function myFunction(){
var form = document.getElementById("my-form");
var action = form.getAttribute("action");
var data = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open("POST", action);
xhr.send(data);
}
</script>
同样,您必须将PHP修复为不在chooseclient上设置条件(除非将其设置为隐藏字段):
if(isset($_POST['client_id'])){
$clientid = mysqli_real_escape_string($mysqli, $_POST['client_id']);
//MYSQL query here
}
如果你选择ajax方法,你可能想对响应做些什么,在stackoverflow上有很多关于这个的线程,这里有一个:如何获得XMLHttpRequest的响应?
出于某种原因,我通过POST提交的表单发送的是选项文本,而不是表单的选项值。这是我的选择声明: 当我用PHP打印我的$\u POST数组时。我有: 我对jquery特别陌生,我使用jquery以模态的方式呈现表单,因此我将粘贴下面的完整表单/div和javascript,以防相关: return_frequency()是一个php函数,根据输入返回“每2周”或“每周”。 我错过了什么?
这是我的代码: 我正在从数据库中提取信息并将它们放入表中各自的列中。所以它看起来像:|课程---部分---(按钮)| 当我让用户单击提交按钮时,我希望能够传递整行的数据。我尝试过以这种方式隐藏输入: 这只会导致一些奇怪的表格格式,并且不起作用。
我想选择强标签内的文本,但不在其下的div。。。 有没有可能直接与jsoup合作? 我的选择尝试(不工作,选择强标签内的完整内容): HTML:
我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加
我对angular很陌生,假设我有一个这样的值数组 我想要不同的html为真值和不同的html为虚假值,而使用ngFor,我遵循这个博客,并实现了这一点,但它不工作 比如。
我正在工作的工具提示和从后端我将获得数据与html标记。我需要在工具提示中显示相应的标签中的相应数据。例如,我将从后端获得Hello用户单击此处。我必须显示为你好用户在h1格式,点击这里应该是一个锚。我尝试了这两个功能,并取代其不工作。 具有以下功能: 替换: https://codesandbox.io/s/serene-fast-u8fie?file=/App.svelte