我试图将我的数据从mySQL数据库传递给returnData.PHP,将AJSON请求作为JSON数据传递给.js文件中的javascript。到目前为止,我可以从mysql查询中检索我的数据并将其编码为json就好了。以下是returnData.php
<?php
include('../sqlFunctions/sqlFunctions.php');
//Establish connection to database
$link = linkDB();
//set up a MySQL query
$sql = "SELECT * FROM shelters;";
if(!$results = $link->query($sql)){
die("Query Unsuccessful");
}
$rows = array();
while ($data = $results->fetch_assoc()) {
$rows[] = $data;
}
$JSONRows = json_encode($rows);
return $JSONRows;
?>
我使用AJAX从javascript函数调用此页面并需要传递此数据。
<script type="text/javascript">
function getData(){
var dataXMLhttp = new XMLHttpRequest();
dataXMLhttp.open("GET", "./js/returnData.php", true);
dataXMLhttp.send();
if(dataXMLhttp.readyState == 4 && dataXMLhttp.status == 200){
var XMLdataResult = dataXMLhttp.responseText;
window.alert("XMLdataResult Contains something.");
}else{
window.alert("404");
}
}getData();
</script>
我正在接收404消息。显然我的AJAX请求被破坏了。返回$ JSONow显然显示了我的noobness。我已经查看并阅读了有关AJAX与PHP的交互,但无法看到我遗漏的那些拼图。
我的AJAX请求有什么问题? 如何将我的JSON转换为PARSing的javascript变量?
感谢阅读。
答案 0 :(得分:1)
你的ajax函数缺少onreadystatechange
事件处理程序,因此总是会触发alert('404')
- 函数中命令的顺序通常也是乱序的。通常应在打开连接并发送请求之前声明回调。
还指出使用相对路径 - 在任何时候都更容易使用绝对路径,
function getData(){
try{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function(){
if( xhr.readyState == 4 && xhr.status == 200 ){
var data = this.response;
alert( data );
}
}
xhr.open( 'GET', '/js/returnData.php', true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send();
}catch( err ){
alert( err );
}
}
getData.call( this );