根据下拉菜单的值创建一个表

时间:2017-07-25 10:22:46

标签: javascript php jquery html json

我陷入了一个部分,我试图将数据从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);
         }

你能否告诉我在上面的剧本中我做错了什么。在此先感谢

1 个答案:

答案 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);
}