js不加alert后面的代码不工作
2015-09-02 09:22
549 查看
问题:用Ajax从后台拿到了json,append到select的option里面,然后想用for循环来设置某个作为默认值,发现在for循环外面加了个alert()的话,就能实现成功,没有加这个alert(),for循环里面的代码感觉是没工作:
源代码如下:
function getShotName() {
$.getJSON("getshotname", function(result) {
$.each(result, function(k, v) {
$("#shotName").append(
"<option value='"+k+"'>" + v + "</option>");
});
});
}
function setDefaultShotName() {
var select = document.getElementById("shotName");
var checkValue = 23;
alert("Coming");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value == checkValue) {
select.options[i].selected = true;
break;
}
}
}
测试的时候发现,没有这个alert("Coming"),下面for里面的就执行不成功,里面加alert也不会弹出
原因:js执行的时候,获取json过程中,没有等待,一直往下走,走到for这里,没有拿到返回的json,所以这个option还没有被append,就是空,所以里面就不会执行,加了alert的话,强制等待,这时候json已经有数据了,所以会执行到for里面的代码
解决:实际使用中,不能一直用alert来代替,网上找了一下原因,是AJAX的异步请求原理,默认是异步的,就是执行提交的时候继续往下走,所以要把这个默认的设置更改一下:
function getShotName() {
$.ajaxSettings.async = false;
$.getJSON("getshotname", function(result) {
$.each(result, function(k, v) {
$("#shotName").append(
"<option value='"+k+"'>" + v + "</option>");
});
});
}
加了这句话之后,获取json过程中会等待再执行,就能正确执行了!
源代码如下:
function getShotName() {
$.getJSON("getshotname", function(result) {
$.each(result, function(k, v) {
$("#shotName").append(
"<option value='"+k+"'>" + v + "</option>");
});
});
}
function setDefaultShotName() {
var select = document.getElementById("shotName");
var checkValue = 23;
alert("Coming");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value == checkValue) {
select.options[i].selected = true;
break;
}
}
}
测试的时候发现,没有这个alert("Coming"),下面for里面的就执行不成功,里面加alert也不会弹出
原因:js执行的时候,获取json过程中,没有等待,一直往下走,走到for这里,没有拿到返回的json,所以这个option还没有被append,就是空,所以里面就不会执行,加了alert的话,强制等待,这时候json已经有数据了,所以会执行到for里面的代码
解决:实际使用中,不能一直用alert来代替,网上找了一下原因,是AJAX的异步请求原理,默认是异步的,就是执行提交的时候继续往下走,所以要把这个默认的设置更改一下:
function getShotName() {
$.ajaxSettings.async = false;
$.getJSON("getshotname", function(result) {
$.each(result, function(k, v) {
$("#shotName").append(
"<option value='"+k+"'>" + v + "</option>");
});
});
}
加了这句话之后,获取json过程中会等待再执行,就能正确执行了!
相关文章推荐
- seajs学习一天后的总结归纳
- 如何把JavaScript数组中指定的一个元素移动到第一位
- JavaScript常用语句
- javascript基础1
- js的局部变量和全局变量的定义形式举例
- javascript学习总结之js使用技巧
- JS实现可点击展开与关闭的左侧广告代码
- JavaScript对象学习小结
- JavaScript学习小结(一)――JavaScript入门基础
- js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
- JS自定义选项卡函数及用法实例分析
- js随机生成字母数字组合的字符串 随机动画数字
- JS实现弹性漂浮效果的广告代码
- js实现拉幕效果的广告代码
- 用迭代法 解析 json 格式 数据
- JS、JQury - 文本框内容改变事件
- JS代码复用模式(继承,混合等)
- javascript 之this及作用域整理
- JS知识点搜集
- JS面向对象的程序设计