如何按顺序调用一堆包含 ajax 的函数
How can I call a bunch of functions that contain ajax sequentially?
我正在开发一个窗口,该窗口包含一堆元素,每个元素都可以单独同时编辑。我使用 ajax 来引入编辑布局,然后再次使用 ajax 将其更改回向客户显示的方式。问题是,我希望当用户单击窗口范围的保存按钮时保存每个"打开以供编辑"元素。
现在,有人决定在图像周围使用锚标签而不是在图像上使用onclick函数会很有趣,所以我必须使用eval
来调用这些函数。
这是我用于窗口范围的"保存"按钮的代码。
var as = document.getElementsByClassName('link_salvare');
alert(as.length);
for(var i = 0; i < as.length; i++) {
alert(i);
eval(as[i].href);
}
alert('finished');
警报只是为了查看哪里出了问题,结果 for 结构在第一次迭代 (i=0) 后停止。我得到 as.length 为 2(当我有 2 个"编辑"元素时),但随后我只得到 i=0 然后"完成"。
我尝试使用异步和非异步 ajax 调用并使用异步调用,我在使用同步调用时得到上述结果,我只是收到警报,没有保存任何元素。
我可以安排一次只编辑一个元素,但这必须等到周末之后才能获得更改单个保存功能的许可。
虽然这个特殊问题尚未解决,但我通过以下方式解决它
a) 从<a href="javascript:function"><img>
更改为<img onclick="function">
,以避免使用EVAL;
b) 更改窗口的设计,以便任何时候只能编辑一个元素。
我仍然不知道为什么"for"循环只经历了一次插入,但我现在没有时间调查,我能做的最好的事情就是希望它以后不会咬我的屁股;
触及eval()
....话虽如此,我没有看到任何其他问题..你谈论ajax(XmlHttpRequest),但你没有提供任何与之相关的错误或代码。
.HTML
<a href="javascript:foo()" class="foobar">yoyo</a>
<a href="javascript:bar()" class="foobar">yoyo</a>
爪哇语
var elements = document.getElementsByClassName('foobar');
function foo() {
alert('foo');
}
function bar() {
alert('bar');
}
[].forEach.call(elements, function(element) {
var func = element.href.split(':')[1],
func_name = func.substring(0, func.lastIndexOf('('));
window[func_name].call();
});
我强烈建议您更改HTML源代码,而不是破解这样的解决方案。 http://jsfiddle.net/rlemon/4vgPn/2/
- 如何用JavaScript或jQuery替换一堆标签
- JavaScript-传单,添加了一堆标记
- 如何使用Gulp编译并移动到另一个文件夹一堆sass文件
- 重定向到同一页面,但其中包含一条消息
- 重定向到同一页面,但其中包含一条消息
- 如何只包含一次javascript文件
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 使用一堆 setTimeouts 还是一个 setInterval 来刷新一堆对象更有效
- 响应字段包含一个子级时的节点 SOAP 强制数组
- 用 JavaScript 加一堆浮点数,总和上的误差界限是多少
- 如何防止/延迟一堆 Bootstrap 模块立即加载其内容以防止站点加载时间缓慢
- 将某些内容与一堆斜杠匹配的正确方法
- 使用 setInterval 运行一堆 ajax 好吗?超过 5 个 AJAX 正在运行
- 可以调用 document.querySelector( ) 一堆
- 在超大的jquery中,如何使用java动态传递一堆图像
- 在木偶布局中维护一堆木偶项目视图
- 从数组中按顺序执行一堆 WinJS 承诺
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 在提交之前将一堆复选框输入附加到表单,然后隐藏它们
- 如何按顺序调用一堆包含 ajax 的函数