如何创建JSON对象,将其发送到Javascript以及如何在Javascript中访问它

时间:2017-04-09 17:08:39

标签: javascript php json

我的目标是提示用户输入位置,并调用我的php程序,该程序将从数据库中获取该位置的记录。然后将JSON对象发送回调用Javascript函数,然后将使用数据库记录中的数据填充用户Form。

我很难找出创建JSON的正确格式,并且一旦被Javascript函数接收,如何正确解析它以填充用户表单。

这是我的Javascript函数,它应该提示用户,并调用php从数据库中检索记录。

function partModify() {
    var WPN = prompt("Please enter the West Part Number", "Harry Potter");
    if (WPN != null) {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
    //            document.getElementById("txtHint").innerHTML = this.responseText;

                var frm = document.getElementById("form-ajax");
                var i;

    //          console.dir(response);      // for debug
        alert(this.responseText);
                for (i in this.responseText) {
                    if (i in frm.elements) {
                        frm.elements[i].value = this.responseText[i];
                    }
                }
            }
        }


        xmlhttp.open("GET","part_get.php?q=" + WPN,true);
        xmlhttp.send();
    }

}

这是获取数据库记录并通过JSON发回的PHP程序。

<?php

$q = ($_GET['q']);

// Build the query based on the passed in parameters

if(!empty($q)) {

    //The query
    $query = "SELECT * FROM part_data WHERE WestPartNumber = '$q'";
    //echo ($query); //see how our query look like at the moment

    $username="xxxx";
    $password="xxxx";
    $database="xxxx";
    $datahost="xxxx";
    mysql_connect($datahost,$username,$password);
    @mysql_select_db($database) or die( "Unable to select database");

    $result=mysql_query($query);
        while ($row = mysql_fetch_row($result)) {
    $temp[] = $row;
}
echo json_encode($temp);

    mysql_close();
    exit;
} else {
echo 'Empty call';
}
echo 'Exiting Call';
?>

我能得到的最接近的是,当我使用alert()调用在Javascript中显示JSON对象时,我会在最后获得整个PHP文件文本以及数据库记录。

有人可以帮助我了解我做错了吗?

2 个答案:

答案 0 :(得分:0)

您想要返回json_encode,而不是回显它。 Echo实际上将它添加到HTML文件中。 Return使其可用于调用程序。

答案 1 :(得分:0)

您的PHP脚本就像一个API,它应该只返回JSON。 首先要做的是从浏览器http://localhost/part_get.php?q=99

中调用它

然后查看页面的代码源(在谷歌浏览器中使用ctrl + u)并检查您的http服务器返回的有效JSON字符串。

另外,你可以摆脱所有那些凌乱的JS代码,然后使用JQuery然后就可以了:

$.getJSON("part_get.php", {
        q: WPN,
    })
    .done(function(data) {
        console.log(data)
    });