JSON.parse(xmlhttp.responseText)意外字符

时间:2012-09-11 05:14:07

标签: php javascript ajax

我在控制台中一直遇到意外的字符错误

var a = JSON.parse(xmlhttp.responseText);

我不知道为什么。这可能就是我的文本框没有填充解析数据的原因吗?

主页代码:

function loadDoc()
{
   var xmlhttp;

   // code for IE7+, Firefox, Chrome, Opera, Safari
   if (window.XMLHttpRequest)
   {
      xmlhttp=new XMLHttpRequest();
   }
   // code for IE6, IE5
   else
   {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }

   xmlhttp.onreadystatechange=function()
   {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
         var doc = window.document.createElement("doc");
         var a = JSON.parse(xmlhttp.responseText);
         document.getElementById("textbox").innerHTML=a.first;
         document.getElementById("textbox2").innerHTML=a.second;
      }
   }

   xmlhttp.open("GET","loadTextBox.php?id=4",true);
   xmlhttp.send();
}

loadTextBox.php代码:

<?php
---Placeholder for correct DB login info---

$result = $mysql->query(---Placeholder for correct SQL query---);

while ($row = $result->fetch_object())
{
   $queryResult[] = $row->present_tense;
}
$textboxValue = $queryResult[0];
$textboxValue2 = $queryResult[2];
echo json_encode(array('first'=>$textboxValue,'second'=>$textboxValue2));
?>

1 个答案:

答案 0 :(得分:2)

您的loadTextBox.php文件不应包含任何HTML,因为JSON.parse方法只需要JSON:

<?php 
    header("Content-type: application/json");

    $db_username = placeholder; 
    $db_password = placeholder; 
    $db_host = placeholder; 

    $result = $mysql->query(---Placeholder for correct SQL query---);

    while ($row = $result->fetch_object())
    {
       $queryResult[] = $row->present_tense;
    }
    $textboxValue = $queryResult[0];
    $textboxValue2 = $queryResult[2];
    echo json_encode(array('first'=>$textboxValue,'second'=>$textboxValue2));
?>

如果您的数据库登录信息位于单独的文件中,则不应该只有PHP标记的HTML或BODY标记。