Coffeescript Ajax - 无法使变量在函数之外工作?

时间:2015-08-13 20:02:27

标签: javascript jquery ajax coffeescript

所以我有这个coffeescript功能:

thestring = ""
$.get '/ajax/questions', (data) -> 
    counter = 0
    dataLength = data.length
    while counter < dataLength
        thestring += "<option value=test>it wont work</option>"
        counter++   

console.log(thestring)
$("#question"+(numfilters+1)).append thestring

在我的例子中,data是一个长度为2的数组数组(例如:[[hello,test],[hi,moretest]])。问题似乎是我的变量“thestring”只在函数内局部更改。当我尝试记录值是什么时,我只是得到我最初分配它的东西(在这种情况下是空字符串)。我在这里尝试做的是根据从ajax请求收到的数据为动态生成的选择框添加选项。

2 个答案:

答案 0 :(得分:1)

这是一个异步函数,因此在 ajax请求完成之后,回调中的代码将被留出来执行,并且顶级函数的其余部分首先完成。只需移动代码即可在回调函数中处理结果:

<div class="embed-responsive embed-responsive-16by9">
   <iframe src="https://www.youtube.com/embed/LTFpAL7Rfww" ></iframe>
</div>

答案 1 :(得分:0)

我弄清楚为什么它没有附加到选择框。变量&#34; numfilters&#34;在异步调用中进行评估之前,它已经增加了。为了解决这个问题,我分配了一个名为&#34; jaxfilters&#34;的新变量。在异步调用之前,它接受numfilters所具有的任何值并且不会增加。