XMLhttpRequest > PHP > XMLhttpRequest

4

我有另一个问题。XMLhttpRequests总是困扰着我。现在所有的东西都存在数据库中,但我需要这些数据在第一次加载或重新加载页面时更新我的页面。XHR在JavaScript文件中触发,该文件又会触发PHP脚本。PHP脚本访问MySQL数据库。但是我如何将获取的记录放回JavaScript以便更新页面呢?我无法弄清楚。

首先是我的同步XMLhttpRequest:

function retrieveRowsDB()
{
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari

     xmlhttp=new XMLHttpRequest();

  }
  else
  {// code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.open("GET","retrieveRowData.php", false);
  xmlhttp.send(null);

  return xmlhttp.responseText;
}

然后是我的PHP脚本:

<?php

 $con = mysql_connect("localhost","root","*************");
 if (!$con)
 {
   die('Could not connect: ' . mysql_error());
 }

 mysql_select_db("sadb", $con);

 $data="SELECT * FROM users ORDER BY rowdata ASC";

 if (!mysql_query($data,$con))
 {
  die('Error: ' . mysql_error());
 }
 else
 {
  $dbrecords = mysql_query($data,$con); 
 }

 $rowdata = mysql_fetch_array($dbrecords);

 return $rowdata;

        mysql_close($con);

?>

我错过了什么吗?有人知道吗?
3个回答

7

PHP脚本无法直接返回给JavaScript,需要使用echo输出数据(以某种方式编码,例如json_encode)。

如果你需要进行任何类型的ajax操作,最好使用一个ajax库,这样可以让你的生活更加轻松。


4

目前你的代码在技术上没有太多问题——你只需要实际地对其进行操作。

在你的PHP文件中,你需要以某种方式输出$rowdata。目前它只是向javascript发送一个空白文档,因此你需要使用echo命令将代码输出。通常情况下,在返回多个对象到javascript时,JSON是一个很好的格式。可以查看一下json_encode

另一方面,在js中,你需要以某种方式更新页面并处理响应。目前你只是再次返回了它。

我建议你浏览一些ajax教程,并考虑使用像jQuery这样的框架来为你完成繁重的工作。你可能还需要阅读一些关于这个主题的文章,因为你有一些基本误解。


2
问题出在xmlhttp.responseText上,它在这个时候不存在,尝试在return语句之前添加以下代码:
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            doSomething(xmlhttp.responseText);
        }
    }
}

基本上你需要等待数据准备好,发起HTTP请求并获得响应需要一定的时间。


哦,正如@skilldrick所说,您需要使用PHP echo或print来输出数据。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接