【发布时间】:2015-02-05 02:54:40
【问题描述】:
我的目标是每 X 秒执行一次 javascript 函数。我读过应该使用 setInterval ,但在我的情况下我不相信。我也不希望必须重新发送变量,以防用户决定在正式发送所有内容之前更改内容
例如,我输入了 60 个时间和 5 个数量,但它等待了 60 秒,然后只发送了 5 个,每 60 秒发送 1 个文本,直到它发送了 5 个文本
我的 javascript
$('input[name="sendtxt"]').click(function(e) {
sendText(e);
});
function sendText(e) {
e.preventDefault();
var phonenum = $('input[name="phonenum"]').val();
var provider = $('select[name="provider"]').val();
var message = $('textarea[name="message"]').val();
var otherprov = $('input[name="otherprov"]').val();
var amount = $('input[name="amount"]').val();
var time = $('input[name="time"]').val() * 1000;
var sendmsg;
for (sendmsg = 1; sendmsg <= amount; sendmsg++) {
setTimeout(function() {
$.ajax({
type: 'POST',
data: {
provider: provider,
message: message,
phonenum: phonenum,
amount: amount,
otherprov: otherprov,
time: time
},
url: 'send.php',
success: function(data) {
console.log('Success. Sent ' + sendmsg + " texts.");
},
error: function(xhr, err) {
console.log("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
console.log("responseText: " + xhr.responseText);
}
});
}, time);
}
还有我的 PHP
<?php
$to = $_POST["phonenum"];
$provider = $_POST["provider"];
$otherprov = $_POST["otherprov"];
$fixedotherprov = str_replace("otherprovider", "", $otherprov);
$completenum = $to . $provider . $fixedotherprov;
$completenum = str_replace('otherprovider', '', $completenum);
$subject = 'Hello';
$message = $_POST["message"];
$headers = 'From: Daniel';
$amount = $_POST["amount"];
//for ($x = 0; $x < $amount; $x++) {
mail($completenum, $subject, $message, $headers);
//}
?>
【问题讨论】:
-
注意:
setTimeout将在单线程中运行
标签: javascript php jquery for-loop settimeout