2017-07-25 125 views
0

我被困在我試圖從PHP文件中的數據讀取到JSON格式的腳本的一部分的值的表。我新的PHP只是想從W3Schools的學習,我被困在HTTP POST方法將數據發送到PHP文件,並顯示在HTML,但我得到一個錯誤使基於一個下拉菜單

Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse() at 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

也許嘗試改變'MyObj中= JSON.parse(this.responseText);''到= MyObj中JSON.parse(xmlhttp.responseText);' –

+0

@AntonisTsimourtos也更新它之後,我仍然得到了同樣的錯誤 –

+0

你有一個錯誤的JSON格式。我覺得應該是'OBJ = { 「表」: 「選擇」, 「極限」:20 }' - 加' 「」''左右其sel'是一個字符串。 –

回答

0

你在PHP代碼已經有些錯誤,你只是打印電子郵件。這不是JSON字符串。

閱讀更多地瞭解JSON:​​

通過閱讀你從對象訪問名稱的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); 
} 
+0

是現在我已經打印JSON格式的數據,但還是同樣的問題 –

+0

我只是想才達到這樣的事情,但是從我的數據庫https://www.w3schools.com/js/tryit.asp?filename=tryjson_html_table_dynamic –

+0

什麼你得到的錯誤是? –

相關問題