在表单中显示数据时ajax函数出错

时间:2018-05-08 09:01:59

标签: php html ajax

我正在尝试从数据库中获取数据并希望以我的形式显示该数据,但它给出了以下错误VM1704:1未捕获的SyntaxError:JSON输入的意外结束。我在我的php文件中选择了数据库中的数据,并希望在我的表单中显示该数据     在JSON.parse()     在XMLHttpRequest.xmlhttp.onreadystatechange(main.php:61)

 <form >
            <div class="form-group">
                <input type="text" name="email" id="email" class="form-control">
            </div>
            <div class="form-group">
                <input type="text" name="name" id="name" class="form-control">
            </div>
            <div class="form-group">
                <input type="text" name="fathername" id="fathername" class="form-control">
            </div>

        </form>
      </div>
    </div>

    <script type="text/javascript">
        function myfunction(id)
        {
            //alert(id);
            console.log(id);
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    var myObj = JSON.parse(this.responseText);
                    document.getElementById("email").innerHTML = myObj.email;
                     document.getElementById("name").innerHTML = myObj.name;
                      document.getElementById("fathername").innerHTML = myObj.fathername;
                }
            };
            xmlhttp.open("GET", "ajax.php?q=" + id, true);
            xmlhttp.send();
        }




    </script>

ajax.php文件

<?php 
$q = $_REQUEST["q"];


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "login";
$records=array();

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
 $sql2 = "SELECT * FROM detail WHERE email= '$q' "  ;
$result = $conn->query($sql2);


if ($result->num_rows > 0) {


    // output data of each row
    while($row = $result->fetch_assoc()) {
        $records=array(
            'email'=>$row['email'],
            'name'=>$row['name'],
            'fathername'=>$row['fathername']


        );


    }
}
else
{

}

return  json_encode($records);
?>

1 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。

第一期

您正在使用return而不是echo

return json_encode($records);

返回并不实际输出任何内容。请改用echo

echo json_encode($records);

第二期

您尝试以错误的方式填充输入字段。您使用的.innerHTML对输入字段无效(它们不具有任何内部HTML)。它是您要设置的value属性:

document.getElementById("email").value = myObj.email

其他输入字段也是如此。