[英]Unknown problem with (probably) POST method
这个任务很简单,但我似乎无法让它工作。 下图解释了结果应该是什么。 我想 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');
欢迎。 这里有一些提示可以帮助您确定问题的根源:
<?php print_r($_POST); ?>
答:您的 PHP 代码从 POST 请求中读取数字,但您的 Javascript 代码仅支持来自 GET 请求的响应。
通过将回调(作为.done()
方法的参数传递的function
块)从 GET 请求移动到 POST 请求来简化您的 Javascript。 然后删除处理GET请求的Javascript代码。
或者,将 $_POST 替换为 $_GET 并删除 POST 调用。
首先,您有两个用于#getusers按钮的事件处理程序。 这首先没有意义。 每当您在 html 元素上分配多个事件处理程序时,只有最后一个会触发。 在这种情况下,它只是使用GET
方法的 ajax 调用。 在你的服务器端(php),这个变量$number = $_POST['number'];
不会有值,因为方法是GET
。
所以要解决这个问题,你有两个我能想到的选择:
#1。 将您拥有的第一个 ajax 调用移动到您有POST
请求的位置,然后将其放置在您使用GET
方法的 ajax 调用的位置。 简而言之,将GET
替换为POST
事件。
#2。 将您的 php 代码更改为使用$_GET
并更新您的 ajax 调用以使GET
遵守 PHP 更改。
您可以删除按钮的任一事件处理程序,只绑定一个。
以下是有关 javascript 事件处理程序和 addEventListeners 的快速参考:https://gist.github.com/belmer/5e4132ceaabb0cafab2
此致,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.