【发布时间】:2019-11-05 22:22:05
【问题描述】:
我正在尝试通过 ajax 处理内部消息传递,使用间隔来减慢查询速度,因为它们有时可能有数百个。然而,我的代码总是提交相同的表单数据,即使 id 是通过 for() 循环自动递增的。
这是我的 HTML:
<form id="form" action="index.php" method="post">
<input type="hidden" id="users" value="2|5|7|8|20" />
<div class="form-group">
<label>Message:</label>
<textarea name="message" id="msg" class="form-control" rows="5"></textarea>
</div>
<button type="submit" class="btn btn-info">Send Message</button>
</form>
这是我的 jQuery 代码:
$("#form").submit(function(e){
e.preventDefault();
var str = $('#users').val();
var message = $('#msg').val();
var strArr = str.split('|');
for(i=0; i < strArr.length; i++){
var myId = strArr[i];
var formdata = "action=messaging_text&id="+myId+"&message="+message+"";
var timerId = 0,
timerId = setInterval(function(){
$.ajax({
type: "POST",
url: 'index.php',
data: formdata,
dataType: 'json'
}).done(function(mydata) {
$("#status").append("Sent Text Message to <span style=\"color:green\">"+mydata.name+"</span><br>");
clearInterval(timerId);
});
}, 6000);
}
});
【问题讨论】:
-
也许this 会有所帮助。
-
你的循环可能在你的 ajax 运行时已经完成,所以表单数据可能是它设置的最后一件事
-
在控制台打开的情况下查看此代码笔:codepen.io/banzomaikaka/pen/bGGvNwX?editors=0010
标签: jquery