如何将接收到的数据存储在变量中jquery

问题描述:

如何使用jquery将接收到的数据从远程php文件存储到变量中。 我收到使用如何将接收到的数据存储在变量中jquery

$.post("test.php", {query: ""+inputString+""}, function(data){ 
       alert(data); 
      }); 
     } 

它的工作,我可以在一个变量接收数据的功能(数据)内,但我可以疮的数据和其他功能使用它的一些东西一样

var data = $.post("test.php", {query: ""+inputString+""}); 
+0

可能重复[ jQuery ajax函数工作,但不能正确返回变量](http://*.com/questions/3101991/jquery-ajax-function-works-but-cant-return-the-variable-correctly) – bfavaretto 2012-03-05 14:51:47

你不能这么做,因为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; 
}); 

然后你就可以在其他功能

+2

不幸的是,你永远不会知道何时为这个'backData'变量赋值以便使用它。唯一可靠的地方是成功回调。 – 2012-03-05 14:52:24

+1

你可以通过设置'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; 
     }); 
    } 

中创建您在其中存储您接收到的数据,你的情况后外的全局变量构建

对于较大的项目,为每个变量或常量创建一个单独的脚本可能很有用,此脚本应与其他脚本包含在同一级别。这样你有当你需要与他们一起工作已经定义了所有变量

同样的事情可以做常量让他们在同一个地方,而不是浏览低谷的项目找到他们的