处理针对JSON数据的PHP URL的AJAX请求。我无法传递数据

时间:2017-06-25 06:50:48

标签: javascript php ajax

我试图将我的数据从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变量?

感谢阅读。

1 个答案:

答案 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 );