2012-09-02 54 views
1

我正在使用CoffeeScript和jQuery,试图从存储在局部变量中的ajax调用中获取数据,因此我可以在我的方法的其余部分中使用它。这是我现有的代码:CoffeeScript:从jQuery中存储数据Ajax调用变量

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 

console.log response 

使用此代码,响应始终保持为空。我想要做的就是从成功函数和调用方法中获取数据变量,但我似乎无法将它从该范围中解脱出来。我在这里做错了什么?

回答

4

Ajax是异步的,所以当您调用console.log response时,不会设置响应,请在回调函数中使用响应。

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 
    console.log response 

我如何确保直到Ajax调用完成后,此脚本等待,所以使用空响应对象也不会继续?

你应该只是做所有的处理在回调函数,如果你不想这样做,你可以通过AJAX选项

+0

好异步为false改变使Ajax调用同步,因此如何我是否确保脚本在此之后等待,直到ajax调用完成,因此它不会继续使用空响应对象? – Andrew

+2

您应该只在回调函数中执行所有处理,如果您不想这样做,则可以通过在ajax选项中将async更改为false来使ajax调用同步。 – Musa

+0

使用'async:false'解决这个特定情况下的所有问题。谢谢! – Andrew