我的目标是提示用户输入位置,并调用我的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文件文本以及数据库记录。
有人可以帮助我了解我做错了吗?
富
答案 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)
});