我能';我无法使用Javascript(Ajax)从PHP获得回复。虽然我能够在PHP页面上显示结果,但我希望它回到HTML页面上

我能';我无法使用Javascript(Ajax)从PHP获得回复。虽然我能够在PHP页面上显示结果,但我希望它回到HTML页面上,javascript,php,ajax,api,web-services,Javascript,Php,Ajax,Api,Web Services,我正在尝试使用PHP构建一个非常简单的web服务。但是我无法从PHP(以JSON格式发送数据)获得响应。当我使用console.log()打印responseText时,它显示为空字符串。PHP使用get方法接受一些数据,当我通过url输入PHP文件和查询参数时,数据就会显示出来。我无法将此数据带回HTML文件。请帮帮我。我试着读了很多问题,也参考了很多代码和视频,但还没有找到任何解决方案 这是我的HTML和Javascript代码: <html> <head> <

我正在尝试使用PHP构建一个非常简单的web服务。但是我无法从PHP(以JSON格式发送数据)获得响应。当我使用console.log()打印responseText时,它显示为空字符串。PHP使用get方法接受一些数据,当我通过url输入PHP文件和查询参数时,数据就会显示出来。我无法将此数据带回HTML文件。请帮帮我。我试着读了很多问题,也参考了很多代码和视频,但还没有找到任何解决方案

这是我的HTML和Javascript代码:

<html>
<head>
<title>Agent Details</title>
<head>
<body>  
<form method="get">
<h1>Enter Agent ID</h1>
<input name="userd" id="userid" type="text" placeholder="enter agent id"></input><br>
<input type="submit">
</form>
<div id="display">
</div>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(xhttp);
        document.getElementById("display").innerHTML=xhttp.responseText;
    }
};
xhttp.open("GET", "test.php", true);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send();
</script>
</body>
</html>

代理详细信息
输入代理ID

var xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ console.log(xhttp); document.getElementById(“display”).innerHTML=xhttp.responseText; } }; open(“GET”,“test.php”,true); setRequestHeader(“内容类型”、“应用程序/json”); xhttp.send();

这是我的PHP代码:

<?php
    $con = mysqli_connect("localhost","root","","raw");
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    if(isset($_GET["userid"])){
        $username=$_GET["userid"];
        $query="SELECT * FROM agents WHERE agent_id='$username'";
        $results=mysqli_query($con,$query);
        $rows=mysqli_fetch_assoc($results);
        $myJson=json_encode($rows);
        header('Content-Type: application/json');
        echo $myJson;
    }
    mysqli_close($con);
?>

您没有在AJAX查询中传递任何参数:
xhttp.open(“GET”,“test.php”,true)。在PHP示例屏幕截图中,您正在将userid作为GET参数传递:
test.PHP?userid=1

首先:您没有通过AJAX传递任何参数:

xhttp.open("GET", "test.php", true);
第二:当页面开始时发送,并且字段中没有定义值,正确的方式是使用创建函数,按下按钮时调用它(删除类型的提交值,并用按钮替换),然后调用函数,如下所示:

<html>
<head>
<title>Agent Details</title>
<head>
<body>  
<form method="get">
<h1>Enter Agent ID</h1>
<input name="userd" id="userid" type="text" placeholder="enter agent id"></input><br>
<input type="button" onclick="ajax()" value="submit">
</form>
<div id="display">
</div>
<script>
function ajax(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(xhttp);
        document.getElementById("display").innerHTML=xhttp.responseText;
    }
};
xhttp.open("GET", "test.php?userd="+document.getElementById('userid').value, true);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send();
}
</script>
</body>
</html>

代理详细信息
输入代理ID

函数ajax(){ var xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ console.log(xhttp); document.getElementById(“display”).innerHTML=xhttp.responseText; } }; xhttp.open(“GET”、“test.php?userd=“+document.getElementById('userid')).value,true); setRequestHeader(“内容类型”、“应用程序/json”); xhttp.send(); }

希望有帮助

您的代码易受攻击。您应该通过或使用带绑定参数的准备语句。有一些很好的例子。谢谢@Alexhowansky我认为通过URL传递参数就足够了,为此我使用了
。我尝试用这段代码在AJAX调用
xhtp.open(“GET”,“test.php?userid=“+getElementById(“userid”)。value,true)中传递参数但未成功。然后我做了这个
xhttp.open(“GET”,“test.php?userid=1”,true)然后它成功地显示了第一行,但这里发生的事情是,页面加载后,结果会立即显示出来,所以我尝试按照您所说的将其放入函数中,但随后它会显示结果,但转眼间结果消失了。我想您留下了旧的
var xhttp=new XMLHttpRequest()
xhttp.onreadystatechange=function(){…}
。如果是这样的话,那么只需删除它,函数就可以完成这个任务。如果不是这样,那么发布您的代码以便我进行调查。我将代码编辑为
xhttp.open(“GET”,“test.php?userid=“+getElementById(“userid”).value,true)
但是现在出现的问题是,这个脚本是在页面加载时执行的,而不是在表单提交时执行的,并且@elfu建议使用函数并调用它。我也这么做了,但现在发生的是函数只被调用和执行一次,并且使用DOM在函数内部显示的结果很快消失。请帮助我,这是一个比问题要长得多的话题。您需要深入了解表单和脚本是如何工作的。请尝试阅读MDN: