在javascript中,循环是在get方法执行之前执行的
in javascript for loop is executing before the get method executes
在下面的示例中,变量e
包含从选择框中选择的所有客户端,我在for
循环中逐一迭代它们,并通过jQuery的get方法传递它们,以根据客户端获取值,但for
循环在get方法结束前执行,因此它更改了val的值(下一个值)。如何解决这个问题?
var e = document.getElementById("client");
for (var i = 0; i < e.options.length; i++) {
if (e.options[i].selected) {
var val = e.options[i].value;
alert(val); // here it is coming normally
$('#fund').append('<option value=' + select.options.length + '>---' + val + '----</option>');
$.get("listFundsForClient", { client: val }, function(data) {
alert("2nd:" + val);// here it is taking next value due to for loop iteration
});
}
}
这是因为这里val
是一个闭包变量,它可以重写为
$('#client option:selected').each(function(){
var $this = $(this), val =$this.val();
alert(val); // here it is coming normally
$('#fund').append('<option value='+select.options.length+'>---'+val+'----</option>');
$.get("listFundsForClient", {client: val}, function(data) {
alert("2nd:"+val);// here it is taking next value due to for loop iteration
});
})
您可以使用$.ajax()
进行同步调用,如下所示:
$.ajax({
url: myUrl,
async: false,
data: myData,
success: function(data) {
//stuff
}
});
相关文章:
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 通过ajax从客户端调用C#方法来执行C#方法
- Javascript:对回调创建的对象执行方法
- ng-if 连续执行方法
- 将外部Javascript文件注入html页面并在其上执行方法WP8 Webbrowser
- 在 JavaScript 中只执行方法的一部分
- AngularJS - 当使用指令生成标记时,无法使用ng-click执行方法
- 在 Ace 编辑器中的多个光标上执行方法
- 如何在列表框项上执行方法选择 asp.net
- 如何在自动可执行方法中获取垃圾对象中属性的值
- 如何在通过对象传递的指令中执行方法
- Cordova插件的执行方法内部的AsyncTask工作不正常
- 在自执行方法中访问Javascript作用域
- 有人知道JS链库允许延迟执行方法吗?
- angularJS$立即执行方法超时
- google-chrome(浏览器)执行方法调用,其结果从未使用(对于RuntimeTest)
- 承诺:如何并行执行异步方法,然后执行方法
- js:在列表被填充后执行方法
- javaScript如何根据条件执行方法
- 守夜人的执行方法