如何将接收到的数据存储在变量中jquery
如何使用jquery将接收到的数据从远程php文件存储到变量中。 我收到使用如何将接收到的数据存储在变量中jquery
$.post("test.php", {query: ""+inputString+""}, function(data){
alert(data);
});
}
它的工作,我可以在一个变量接收数据的功能(数据)内,但我可以疮的数据和其他功能使用它的一些东西一样
var data = $.post("test.php", {query: ""+inputString+""});
你不能这么做,因为AJAX是异步的,这意味着结果只在成功回调中可用,而回调可能比实际的$.post
调用晚得多。因此,不是试图将结果存储到变量中,而是使用成功回调,它是唯一可靠的地方,以消费AJAX请求的结果来调用某些其他方法,并对这些结果执行一些处理:
$.post("test.php", { query: inputString }, function(data) {
someFunction(data);
});
您应该在回调函数中使用另一个函数data
。
只是将其设置为一个变量。
var storedData;
$.post("test.php", {query: ""+inputString+""}, function(data){
storedData = data;
});
}
您需要定义功能
var backData = '';
$.post("test.php", {query: ""+inputString+""}, function(data){
alert(data);
backData = data;
});
然后你就可以在其他功能
不幸的是,你永远不会知道何时为这个'backData'变量赋值以便使用它。唯一可靠的地方是成功回调。 – 2012-03-05 14:52:24
你可以通过设置'async:false'来使用jQuery提供的同步ajax文章。 – 2012-03-05 14:54:45
var myResult;
$.post('ajax/test.html', function(data) {
myResult=data;
$(body).trigger('myAjaxComplete')
});
使用backData以外的变量,但与问题是,AJAX是异步,所以你永远不知道什么时候AJAX完全完成。您可以触发上述的自定义事件并收听。所以,你会知道的AJAX已经完成,你必须肯定的数据:
$(body).on('myAjaxComplete',function(){
//do whatever you like to do with your data
});
或者另一种方式是打电话与您的数据的函数:
$.post('ajax/test.html', function(data) {
myAjaxisDoneSoContinue(data);
});
这里的问题是,function (data)
是callback
这是在事件上调用(当数据被盗版时)。你看,javascript是异步语言,这意味着一些函数不是一个接一个地调用,而是一些事件。你应该用你的数据回调功能可按里面,并把所有的逻辑,这取决于它的回调
$.post("test.php", {query: ""+inputString+""}, function(data){
// manipulate date, call another functions, etc;
});
}
中创建您在其中存储您接收到的数据,你的情况后外的全局变量构建
对于较大的项目,为每个变量或常量创建一个单独的脚本可能很有用,此脚本应与其他脚本包含在同一级别。这样你有当你需要与他们一起工作已经定义了所有变量
同样的事情可以做常量让他们在同一个地方,而不是浏览低谷的项目找到他们的
可能重复[ jQuery ajax函数工作,但不能正确返回变量](http://stackoverflow.com/questions/3101991/jquery-ajax-function-works-but-cant-return-the-variable-correctly) – bfavaretto 2012-03-05 14:51:47