繁体   English   中英

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

[英]Handle AJAX request to PHP url for JSON data. I cant pass the data

我试图将我的数据从mySQL数据库传递到returnData.PHP,并将其作为JSON数据的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 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM