Javascript AJAX-从php获取数据
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5346171/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
AJAX-Get data from php
提问by Vikash Talanki
I am a newbie to AJAX.The task is I have to get the data from a php file and store it in a javascript variable. I have gone through many examples but didn't find helpful. I am giving a pseudo html code here:
我是 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>
My php code:
我的php代码:
<?php
$file=fopen("datapoints.txt","r");
$read=fread($file,filesize("datapoints.txt"));
fclose($file);
echo $read;
?>
the problem here is I dont have any form variables in my html file to use while calling php file. simply when the page loads, "ajaxfunction()" should be called and get data from php and store in a variable................
这里的问题是我的 html 文件中没有任何表单变量可以在调用 php 文件时使用。只需在页面加载时,就应该调用“ajaxfunction()”并从 php 获取数据并存储在变量中......
I guess you can understand my problem
我想你能理解我的问题
Any help is greatly appreciated
任何帮助是极大的赞赏
回答by Jake N
You can put jQuery to good use here. The docs are here http://api.jquery.com/jQuery.ajax/.
您可以在这里充分利用 jQuery。文档在这里http://api.jquery.com/jQuery.ajax/。
An example is below:
一个例子如下:
<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>
Your ajax.php file can just contain:
您的 ajax.php 文件可以只包含:
<?php
echo json_encode(array("value" => "Hello World"));
?>
回答by Jakob Alexander Eichler
If you would like to would like to send data from php to javascript down, you can use json_encode. To recieve data with php you can use $_GET and $_POST (as long as you are writing an application in which all that is simple) :)
如果您想将数据从 php 发送到 javascript,您可以使用 json_encode。要使用 php 接收数据,您可以使用 $_GET 和 $_POST(只要您正在编写一个应用程序,其中所有内容都很简单):)
For your Ajax Requst you (I allow this just for the author of this question) can use my javascript code:
对于您的 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;}
}
The RequestCache is implemented as Object (look how this is done in Javascript) But maybe JQuery or so can solve your tasks too.
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;
};