我陷入了一个部分,我试图将数据从php文件获取到json格式的脚本。我是php的新手,只是想从w3schools学习,我陷入了HTTP方法POST,将数据发送到PHP文件并以html显示但是我收到了错误
未捕获的SyntaxError:意外的令牌<在位置0的JSON中 在JSON.parse() 在XMLHttpRequest.xmlhttp.onreadystatechange
这是我在前面所做的代码,我使用的是html和javascript:
<script>
function change_myselect(sel) {
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj = { "table":sel, "limit":20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
txt += "<table border='1'>"
for (x in myObj) {
txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.open("POST", "get_email.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
}
</script>
<select id="get_email" name="get_email" onchange="change_myselect(this.value)">
<option value="">Choose an option:</option>
<option value="3">Customers</option>
<option value="4">Products</option>
<option value="5">Suppliers</option>
</select>
<p id="demo"></p>
这是我的php文件:
<?php
include("admin/include/config.php");
$id=$_POST['get_email']
if(isset($_POST['$id'])){
$sql=mysql_query("select * from subscription where id=".$id);
$returnArray = array();
while ($row=mysql_fetch_array($sql)){
$returnArray =
array("email"=>$row['email'],"creationDate"=>$row['creationDate']);
}
// return JSON response.
header('Content-Type: application/json');
echo json_encode($returnArray);
}
你能否告诉我在上面的剧本中我做错了什么。在此先感谢
答案 0 :(得分:0)
你在PHP代码中有一些错误,你只是打印电子邮件。那不是JSON字符串。
阅读本文以了解有关JSON的更多信息:https://www.w3schools.com/js/js_json_intro.asp
通过阅读您的JS代码,您正在从对象访问名称,因此可能需要更改PHP脚本,如下所示,
<?php
include("admin/include/config.php");
$id=$_POST['get_email']
if(isset($_POST['$id'])){
$sql=mysql_query("select * from subscription where id=".$id); // You missed semi colon here.
$returnArray = array();
while ($row=mysql_fetch_array($sql)){
$returnArray = array("email"=>$row['email'],"name"=>$row['name']); // assuming column name exists.
}
// return JSON response.
header('Content-Type: application/json');
echo json_encode($returnArray);
}