我有一个包含多个复选框的表单。此表单应发送到服务器以从服务器端脚本接收适当的结果。
这已经有效了。
我现在要做的是:
1)实现超时:这已经有效,但是一旦发生超时,新请求就不再有效了。
2)在请求结果时实现延迟:应实施延迟,以便不是每个复选框都会产生POST请求。
这就是我现在所拥有的:
function update_listing() {
// remove postings from table
$('.tbl tbody').children('tr').remove();
// get the results through AJAX
$.ajax({
type: "POST",
url: "http://localhost/hr/index.php/listing/ajax_csv",
data: $("#listing_form").serialize(),
timeout: 5000,
success: function(data) {
$(".tbl tbody").append(data);
},
error: function(objAJAXRequest, strError) {
$(".tbl tbody").append("<tr><td>failed " + strError + "</td></tr>");
}
});
return true;
}
结果现在作为HTML表格行传递 - 我将在下一步将它们转换为CSV / JSON。
非常感谢你的建议。
答案 0 :(得分:2)
延迟时间:
(function () {
var timeout;
function update_listing() {
// remove postings from table
clearTimeout(timeout);
timeout = setTimeout(function () {
$('.tbl tbody').children('tr').remove();
// get the results through AJAX
$.ajax({
type: "POST",
url: "http://localhost/hr/index.php/listing/ajax_csv",
data: $("#listing_form").serialize(),
timeout: 5000,
success: function(data) {
$(".tbl tbody").append(data);
},
error: function(objAJAXRequest, strError) {
$(".tbl tbody").append("<tr><td>failed " + strError + "</td></tr>");
}
});
}, 1000); // 1 second?
return true;
}
}());
这将等待一秒钟,直到发出AJAX请求。关于“一旦发生超时,新请求不再起作用”,你是什么意思?如果您想在另一个请求失败时触发另一个请求,只需再次调用update_list()
(但请注意,1秒延迟将生效)。