我试图将我的数据从 mySQL 数据库传递到 returnData.PHP 到 AJAX 请求,作为 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 显然表明了我的菜鸟。我已经查看并阅读了有关 AJAX 与 PHP 交互的内容,但看不到我所缺少的拼图的各个部分。
我的 AJAX 请求出了什么问题? 如何将 JSON 放入 JavaScript 变量中以进行 PARSing?
感谢您的阅读。
最佳答案
您的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 );
关于javascript - 处理对 PHP url 的 AJAX 请求以获取 JSON 数据。我无法传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743957/