首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XMLhttpRequest > PHP > XMLhttpRequest

XMLhttpRequest > PHP > XMLhttpRequest
EN

Stack Overflow用户
提问于 2010-06-15 18:36:45
回答 3查看 10.7K关注 0票数 4

我还有一个问题。XMLhttpRequests一直困扰着我。现在一切都在数据库中,但是我需要这些数据来在第一次页面加载或重新加载时更新我的页面。XHR在JavaScript文件中触发,该文件触发PHP-Script。PHP脚本访问MySQL数据库。但是,如何将获取的记录返回到JavaScript中以进行页面更新呢?我想不出来。

首先是我的同步XMLhttpRequest:

代码语言:javascript
运行
复制
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脚本:

代码语言:javascript
运行
复制
<?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);

?>

这里我漏掉了什么?有谁有线索吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-15 18:49:51

到目前为止,你的代码在技术上并没有太大的问题--你只需要对它做一些实际的事情。

在PHP文件中,您需要以某种方式输出它,而不是return $rowdata;。目前,它只是将一个空白文档发送回javascript,因此您需要echo出代码。通常,当使用要返回给javascript的大量对象时,JSON是一种很好的格式。查看json_encode

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

我建议您阅读一些ajax教程,并考虑使用jQuery这样的框架来为您完成繁重的工作。你可能还想在这个主题上读一些书,因为你有一些基本的误解。

票数 4
EN

Stack Overflow用户

发布于 2010-06-15 18:42:51

PHP脚本不能return到JavaScript。您必须对数据进行编码( echo )(以某种方式编码,例如json_encode)。

实际上,如果您正在进行任何类型的ajax,那么使用ajax library将使您的工作变得更加轻松。

票数 7
EN

Stack Overflow用户

发布于 2010-06-15 18:43:28

问题是xmlhttp.responseText,它当时还不存在,试着在你的return语句之前添加这个:

代码语言:javascript
运行
复制
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            doSomething(xmlhttp.responseText);
        }
    }
}

基本上,您必须等到数据可用,发出HTTP请求并获得响应需要时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3044363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档