这个任务很简单,但我似乎无法使它起作用。结果应该解释在下面的图片。我想在php中的POST可能存在某种问题,但我不确定。你知道是什么问题导致这件事不起作用吗?
问题:当应该有结果时,没有显示结果。

<?php
$conn = mysqli_connect("localhost", "root", "", "podaci");
if($conn === false){
die("Konekcija nije uspešna. " . mysqli_connect_error());
}
$number = $_POST['number'];
$result_array = array();
/* SQL query to get results from database */
$sql = "SELECT brojKartice, imeVlasnika, prezimeVlasnika, adresaVlasnika,
ostvareniBodovi, ostvareniPopust FROM podatak WHERE brojKartice = '".$number."' ";
$result = $conn->query($sql);
/* If there are results from database push to result array */
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push($result_array, $row);
}
}
/* send a JSON encded array to client */
echo json_encode($result_array);
$conn->close();
?><!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<meta charset="UTF-8">
</head>
<body>
<div class = "container" >
<strong>Unesite broj kartice: </strong><input id="number" name="number" required/>
<input type="button" id="getusers" value="Provera"/> <br><br>
<div id="records"></div>
</div>
<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(function() {
$('#getusers').click(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'provera.php',
data: {
number: $('#number').val()
}
});
});
});
$(function(){
$("#getusers").on('click', function(){
$.ajax({
method: "GET",
url: "provera.php",
}).done(function( data ) {
var result= $.parseJSON(data);
var string='<table width="100%"><tr><th>#</th><th>Korisnik</th><th>Adresa</th><th>Bodovi</th><th>Popust</th><tr>';
/* from result create a string of data and append to the div */
$.each( result, function( key, value ) {
string += "<tr> <td>"+value['brojKartice'] + "</td><td>"+value['imeVlasnika']+' '+value['prezimeVlasnika']
+ "</td><td>"+value['adresaVlasnika']+ "</td><td>"+value['ostvareniBodovi']+ "</td><td>"
+value['ostvareniPopust']+"</td> </tr>";
});
string += '</table>';
$("#records").html(string);
});
});
});
</script>
</body>
</html>CREATE DATABASE podaci;
CREATE TABLE podatak (
brojKartice VARCHAR(10) NOT NULL,
imeVlasnika VARCHAR(20) NOT NULL,
prezimeVlasnika VARCHAR(30) NOT NULL,
adresaVlasnika VARCHAR(50),
ostvareniBodovi VARCHAR(10) NOT NULL,
ostvareniPopust VARCHAR(10) NOT NULL,
rokVazenja DATE NOT NULL
);
INSERT INTO podatak VALUES
('0123456','Đorđe','Anđelković',NULL,'15','150','2021-1-9'),
('6543210','Snežana','Bojović',NULL,'20','200','2021-5-3'),
('9876543','Goran','Stojadinović',NULL,'10','100','2021-9-7'),
('3456789','Bojana','Marković',NULL,'25','250','2021-12-15');发布于 2021-03-23 23:02:14
欢迎。以下是一些帮助您识别问题来源的提示:
<?php print_r($_POST); ?>答: PHP代码从POST请求中读取数字,但Javascript代码只支持GET请求的响应。
通过将回调(作为function方法的参数传递的.done()块)从GET请求移动到POST请求来简化Javascript。然后删除处理GET请求的Javascript代码。
或者,将$_POST替换为$_GET并删除POST调用。
发布于 2021-03-23 23:10:33
首先,您有两个#getuser按钮的事件处理程序。这从一开始就没有意义。每当在html元素上分配多个事件处理程序时,只有最后一个事件处理程序才会触发。在本例中,它只是带有GET方法的ajax调用。在服务器端(php),这个变量$number = $_POST['number'];不会有值,因为方法是GET。
因此,要解决这个问题,我可以想到两个选项:
#1.将包含POST请求的第一个ajax调用移动到具有GET方法的ajax调用的位置。简而言之,将GET替换为POST事件。
#2.更改您的php代码以使用$_GET,并更新对GET的ajax调用以符合PHP。
您可以删除按钮的任何一个事件处理程序,只需绑定一个。
下面是关于javascript事件处理程序和addEventListeners:https://gist.github.com/belmer/5e433aabbab24086af5c12ce0fb7323c的快速参考
诚挚的问候,
https://stackoverflow.com/questions/66772393
复制相似问题