首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(可能) POST方法的未知问题

(可能) POST方法的未知问题
EN

Stack Overflow用户
提问于 2021-03-23 22:51:33
回答 2查看 55关注 0票数 1

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

问题:当应该有结果时,没有显示结果。

代码语言:javascript
复制
<?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();
?>
代码语言:javascript
复制
<!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>
代码语言:javascript
复制
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');
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-23 23:02:14

欢迎。以下是一些帮助您识别问题来源的提示:

  1. 您的浏览器是否正在发出您期望的HTTP请求?通过浏览您的Javascript,您期望得到一个帖子和一个GET。如果您正在使用Google,请检查开发工具-网络
  2. 服务器正在接收哪些HTTP请求?您可以通过在正式调试文档之后调试PHP代码并读取其注释。特别是:
代码语言:javascript
复制
<?php print_r($_POST); ?>
  1. 服务器是否响应您所期望的数据?检查用于获取数字的HTTP谓词(GET或POST) (提示:代码的第8行)。现在检查放置Javascript回调以处理服务器响应的HTTP调用(GET或POST)。

答: PHP代码从POST请求中读取数字,但Javascript代码只支持GET请求的响应。

通过将回调(作为function方法的参数传递的.done()块)从GET请求移动到POST请求来简化Javascript。然后删除处理GET请求的Javascript代码。

或者,将$_POST替换为$_GET并删除POST调用。

票数 0
EN

Stack Overflow用户

发布于 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的快速参考

诚挚的问候,

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66772393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档