存储来自get Request的数据

时间:2015-11-08 03:42:53

标签: javascript jquery http post server

假设我正在使用Jquery执行发布请求:

var information;

$.post( url, function( data ) {
  information = data;
});

console.log(information);//This is undefined! Why?

为什么信息变量未定义?即使在帖子请求结束后,我该怎么做才能存储数据?

3 个答案:

答案 0 :(得分:2)

$ .post是异步的,所以你必须使用$ .ajaxSetup({async:false});在它之前得到你期待的结果。

基本上发生的是你的console.log正在运行之前$ .post回调可以将数据保存到变量中,因此会出现未定义的错误。

答案 1 :(得分:1)

你必须从适当的回调中获得它。 $ .post()是异步的。这是一个例子:

// Get some values from elements on the page:
var $form = $( this ),
  term = $form.find( "input[name='s']" ).val(),
  url = $form.attr( "action" );

// Send the data using post
var posting = $.post( url, { s: term } );

// Put the results in a div
posting.done(function( data ) {
  var content = $( data ).find( "#content" );
  $( "#result" ).empty().append( content );
});

来自jQuery文档:http://api.jquery.com/jquery.post/

另外,我不推荐Dontfeedthecode的建议。永远不应该在javascript中使用同步模式,因为它具有非预期的效果,例如锁定用户界面的某些部分。对于测试或特定情况可能没问题,但我想我应该提一下这个免责声明。

答案 2 :(得分:0)

$ .post是一个异步函数,所以当你调用console.log(information);信息变量仍然为空时,所以你应该只使用$ .post函数内的数据或使用回调函数。

var information;

$.post( url, function( data ) {
  workDone(data);
});
function workDone(data){
     information = data;
     console.log(information);
}