我遇到了绑定下拉菜单的问题。我认为问题是我$.get()
中的回调。执行循环是否不安全? E.G。
//on document ready
var stateOneOrTwo = "stateOne";
for(var i = 0; i < 2; i++){
if(i === 1)
stateOneOrTwo = "stateTwo";
$.get(url,{},function(data) {
var dropdown = stateOneOrTwo;
$(dropdown).append(/*options*/);
, 'json')};
}
<小时/> 这看起来似乎不安全。我把DRY原则抛到了窗外。当我复制粘贴代码并只更改涉及的变量名称时,我没有任何问题。我将提出一个具体答案的问题。
答案 0 :(得分:1)
我完全不确定$.get
是否会在完成之前调用一个新的失败,但是,更安全(和更正确)的方法是使用递归函数来确保请求完成在发送下一个之前。
答案 1 :(得分:1)
问题是您在XHR返回之前正在更改stateOneOrTwo,因此两个回调都将在stateOneOrTwo
等于"stateTwo"
的情况下运行。如果你只是打电话给两次,你真的不需要循环。
$.get(url,{},function(data) {
var dropdown = "stateOne";
$(dropdown).append(/*options*/);
}, 'json');
$.get(url,{},function(data) {
var dropdown = "stateTwo";
$(dropdown).append(/*options*/);
}, 'json');