2016-07-04 65 views
0

我有一些使ajax调用的javascript代码,得到了一个var,然后尝试在脚本的稍后使用var。问题是因为ajax调用,其余的代码在它有var之前运行。如果我只是一个警报添加,东西很好地工作:在代码继续之前需要由Ajax返回的var

var quote_request_id; 
    $.ajax({ 
      type: "POST", 
      url: rate_url + '/99/1', 
      data: datastring, 
      dataType: "html" 
    }).done(function(data,status,xhr) { 
     quote_request_id = xhr.getResponseHeader('X-QuoteRequest-Id'); 
    }); 

然后我有一个使用quote_request_id VAR其他Ajax调用,但它没有被设置。如果我只是在上面的代码块后添加一个警报,它就会起作用。我意识到这是因为ajax调用的异步行为。只需要找出一种方法来获取var并在代码的其余部分使用它。

+1

你认为你需要什么,你实际需要的是两个不同的东西。你实际需要的是重构你的代码,以考虑从服务器获取报价请求ID的异步性质。 – Adam

回答

0

然后你不需要AJAX,你需要SJAX这是一个同步通信来代替。将async: false添加到您的ajax对象。 但是,我建议你从第一个success方法或done启动随后的ajax调用,以便无论如何你都有变量。

+1

但请注意,这样做是非常糟糕的做法,并且意味着您会在控制台中看到浏览器警告。更好的解决方案是重构代码,以便遵循异步原则。 –

相关问题