2011-03-17 200 views
1

我是AJAX的新手。任務是我必須從php文件獲取數據並將其存儲在JavaScript變量中。我經歷了許多例子,但沒有找到有用的東西。 我在這裏給人一種假的html代碼:AJAX-從php獲取數據

<html> 
<head> 
<script> 
function ajaxfunction() 
{ 
    //code for httprequest 
    **call the php file declare a variable and store the response of php** 
    //return the variable 
} 
</script> 
</head> 
<body> 
    //my code for displaying a map 
    **mainvariable=ajaxfunction();//storing the value of subvariable(data from php) in mainvariable** 
    //use the mainvariable and do the remaining task 
<body> 

我的PHP代碼:

<?php 
    $file=fopen("datapoints.txt","r"); 
    $read=fread($file,filesize("datapoints.txt")); 
    fclose($file); 
    echo $read; 
?> 

這裏的問題是我沒有任何形式的變量在我的HTML文件中使用,同時呼籲PHP文件。簡單地當頁面加載時,應該調用「ajaxfunction()」並從php獲取數據並存儲在變量中................

我想你可以理解我的問題

任何幫助是極大的讚賞

+0

@jakenoble的答案是正確的。 '.load()'或'.get()'用於顯示內容,'.getJSON()'用於獲取數據並存儲爲jQuery變量。 http://en.wikipedia.org/wiki/JSON – CallMeLaNN 2011-03-18 02:04:19

+0

根據您的問題,您爲什麼需要Ajax?您可以在html文件中添加php標籤,或者將文件重命名爲.php。因此,只需簡單地填充這個形式的php變量,就像這樣:」/>' – CallMeLaNN 2011-03-18 02:06:58

回答

0

如果你想想從PHP發送數據的JavaScript下來,你可以使用json_encode。 要用PHP接收數據,你可以使用$ _GET和$ _POST(只要你正在編寫一個簡單的應用程序):)

對於你的Ajax請求你(我允許這只是作者這個問題),可以使用我的javascript代碼:

function getRequestObject(){ 
    var o = null; 
    if(window.XMLHttpRequest){ 
     o = new XMLHttpRequest(); 
    }else if(window.ActiveXObject){ 
     try{ 
      o = new ActiveXObject('Msxml2.XMLHTTP'); 
     }catch(e1){ 
      try{ 
       o = new ActiveXObject('Microsoft.XMLHTTP'); 
      }catch(e2){ 

      } 
     } 
    } 
    return o; 
} 
function request(method, adress,sendData,callback){ 
    var o = getRequestObject(); 
    var async = (callback!==null); 
    if(method === 'GET'){ 
     if(sendData!=null){adress+="?"+sendData;} 
     o.open(method, adress, async); 
     o.send(null); 
    }else if(method === 'POST'){ 
     o.open(method, adress, async); 
     o.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded'); 
     o.send(sendData); 
    } 
    if(async){ 
     o.onreadystatechange = function(){ 
      if(o.readyState==4&&o.status==200){ 
       callback(o.responseText); 
      }else if(o.readyState==4&&o.status!=200){ 
       //Error 
      } 
     }; 
    } 
    if(async){return ;} 
    else{return o.responseText;} 
} 

的RequestCache作爲對象實現(看看這是如何在Javascript中完成) 但也許JQuery的左右可以解決你的任務了。

function RequestCache(){} 
RequestCache.cache = Array(); 
RequestCache.getRequest=function (method, adress,sendData,callback,enforceReload){ 
    if(enforceReload===null){enforceReload=false;} 
    var url = method+adress+sendData; 
    var newUrl = true; 
    if(typeof(enforceReload)==="undefined"||enforceReload===false){ 
     for(var key in RequestCache.cache){ 
      if(key===url){ 
       newUrl=false; 
       break; 
      } 
     } 
    } 
    if(newUrl){ 
     if(callback){ 
      request(method, adress,sendData, 
       function(res){ 
        RequestCache.cache[url]=res; 
        callback(res); 
       } 
      ); 
     }else{ 
      RequestCache.cache[url]=request(method, adress,sendData,null); 
      return RequestCache.cache[url]; 
     } 
    }else{ 
     if(callback){ 
      callback(RequestCache.cache[url]); 
     }else{ 
      return RequestCache.cache[url]; 
     } 
    } 
}; 
RequestCache.setRequest = function (method, adress,sendData,result){ 
    var url = method+adress+sendData; 
    RequestCache.cache[url] = result; 
}; 
0

做你想做的,我知道什麼是最簡單的方法,將是jQuery的.load()功能或者是將其存儲在一個變量.get()功能。

4

你可以在這裏很好的使用jQuery。文檔在這裏http://api.jquery.com/jQuery.ajax/

下面是一個例子:

<html> 
<head> 
<!-- Include jquery from Google here --> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 

<script type="text/javascript"> 
// Wait till dom is loaded 
$(document).ready(function() { 
    // When id with Action is clicked 
    $("#Action").click(function() 
    { 
    // Load ajax.php as JSON and assign to the data variable 
    $.getJSON('ajax.php', function(data) { 
     // set the html content of the id myThing to the value contained in data 
     $("#myThing").html(data.value); 
    }); 
    }); 
}); 
</script> 
</head> 
<body> 
    <a id="Action">Click Me</a> 
    <p id="myThing"></p> 
</body> 
</html> 

你ajax.php文件可以只包含:

<?php 
    echo json_encode(array("value" => "Hello World")); 
?>