【发布时间】:2013-12-20 00:52:19
【问题描述】:
我正在尝试在下面的每次迭代中将文本(先前创建的数组中的值)附加到 DIV。 Ajax 调用似乎正在等待返回其输出,直到所有迭代都完成。
有没有办法在每次迭代中追加?
谢谢。
var inputValue = [];
$("form#null_form :input[type=text]").each(function () {
inputValue.push($(this).prop('value'));
});
for (var i = 1; i < inputValue.length; i++) {
$.ajax({
url: "http://urlthatdoessomething.xxx",
type: 'POST',
dataType: 'json',
success: function (output_string) {
$('#results').append('<p class=\"normal-msg\">' + inputValue[i] + ' column successfully converted...</p> ');
},
error: function (output_string) {
$('#results').append('<p class=\"error-msg\">ERROR: Check spelling and try again... </p> ');
}
});
}
【问题讨论】:
-
for中的 AJAX 可能很危险。如果服务器宕机了,你发送大量请求到死胡同! -
另外,不能保证您会按照 ajax 调用的顺序附加它们。
-
看起来很奇怪,您没有向服务器发送任何内容,也没有得到您实际使用的任何内容,并且您为匹配表单中的每个输入发送了一个 ajax 请求? ajax 请求到底在做什么,你希望它输出什么。作为旁注,您需要一个闭包来保持异步回调中
i的值不变 -
@tymeJV - 此例程位于站点的后端,很少使用。 Ajax 调用需要处理的项目数量各不相同,这就是我目前将其置于循环中的原因。有没有更好的 方法来实现这一点?接受建议。谢谢。
-
@adeneo - 该例程确实在外部数据库中进行了更改。我只是没有在示例中包含细节。
标签: jquery ajax loops for-loop append