AJAX-从php获取数据

时间:2011-03-17 22:41:37

标签: php javascript html ajax

我是AJAX的新手。任务是我必须从php文件中获取数据并将其存储在javascript变量中。我已经通过了很多例子,但没有找到帮助。 我在这里给出一个伪html代码:

<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;
?>

这里的问题是我在调用php文件时使用的html文件中没有任何表单变量。只是当页面加载时,应该调用“ajaxfunction()”并从php获取数据并存储在变量................

我想你可以理解我的问题

非常感谢任何帮助

3 个答案:

答案 0 :(得分: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"));
?>

答案 1 :(得分: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实现为Object(看看如何在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;
};

答案 2 :(得分:0)