2010-06-15 54 views
3

我還有一個問題。 XMLhttpRequests困擾着我。現在一切都在數據庫中,但我需要這些數據來在頁面加載或重新加載時更新我的​​頁面。 XHR在觸發PHP腳本的JavaScript文件中被觸發。 PHP腳本訪問MySQL數據庫。但是,如何將獲取的記錄返回到我的JavaScript進行頁面更新。我想不明白。XMLhttpRequest> PHP> XMLhttpRequest

首先我同步的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); 

?> 

缺少什麼我在這裏?任何人都有線索?

回答

4

技術上沒有太多到目前爲止您的代碼有誤 - 您只需要實際上與它的東西。

在你的PHP文件中,而不是return $rowdata;,你需要以某種方式輸出它。目前,它只是發送一個空白的文件回到JavaScript,所以你需要echo的代碼。通常,當使用多個對象返回到javascript時,JSON是一種很好的格式。檢查出json_encode

另一方面,在js中,您需要以某種方式採取響應並更新頁面。目前,你只是再次回來。

我建議你通過幾個ajax教程,並考慮使用框架,如jQuery爲你做繁重的工作。您可能還想對此主題進行一些閱讀,因爲您有一些基本的誤解。

7

PHP腳本不會將return轉換爲JavaScript。您必須echo數據(以某種方式編碼,例如json_encode)。

真的,如果你正在做任何類型的ajax,你會通過使用ajax library讓你的生活變得更容易。

+0

thx。是回聲和json_encode工作。 – user366121 2010-06-15 11:51:29

2

的問題是xmlhttp.responseText,它不會在當時存在,嘗試只是你return語句前加上這樣的:

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { 
      doSomething(xmlhttp.responseText); 
     } 
    } 
} 

基本上你要等到數據可用,它需要時間來使一個HTTP請求並獲得響應。

+0

哦,和@skilldrick說你需要PHP回顯或打印數據。 – Tom 2010-06-15 10:44:51