作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于这段代码:
$.each(divList, function(){
var dropdown = '';
$.get("ajax.php",{'some':'params', 'other':'params'},function(msg){
dropdown = msg;
console.log( dropdown );
});
console.log( dropdown );
$(dropdown).appendTo($(this));
});
...第一个日志显示下拉变量保存从 ajax 返回的正确文本,第二个是空的(appendTo 什么都不做)。
有没有办法让它起作用?是否与所使用的浏览器有某种依赖性?
最佳答案
$.get()
是异步的:它返回得非常快,在后台执行其工作并通过调用您提供的回调函数发出完成信号。
由于您对 console.log()
的第二次调用和对 appendTo()
的调用都在回调之外,因此它们会运行得太早,在 $ 之前.get()
完成并设置 dropdown
。
通常的模式是将对 appendTo()
的调用放在回调函数中:
$.each(divList, function() {
$.ajax({
url: "ajax.php",
data: {
// your parameters...
},
context: this,
success: function(msg) {
console.log(msg);
$(msg).appendTo(this);
}
});
});
编辑:如果您想从回调函数中访问原始的this
引用,您可以在context
选项中将其传递给$.ajax() ,就像上面的代码一样。
关于javascript - 闭包内的 jQuery 变量可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9118154/
我正在尝试对 StockData 表执行 OHCL sql 查询 (SQL Server 2012)。每天有数千行添加到表中,我想获取每天的开盘价、最高价、最低价和收盘价数据。 建表sql如下:
我是一名优秀的程序员,十分优秀!