我有一个以下函数:
function mark_unmark_user_answer(targ, answer, answer_id, test_id, test_type, question_no, module_url) {
if(checked==targ){
targ.checked=false;
checked=false;
} else {
checked=targ;
}
$.post(module_url, {'test_id':test_id, 'question_no':question_no, 'op':'mark_ans', 'test_type':test_type, 'answer_no':answer, 'answer_id':answer_id}, function(data) {
if(jQuery.trim(data)=='unmark_ans') {
$('input[type="radio"]').removeAttr('checked');
$('#display_'+question_no).removeClass('green');
$('#display_'+question_no).removeClass('blue');
$('#display_'+question_no).addClass('orange');
} else {
//$('#mark_review').val('Mark');
$('#display_'+question_no).removeClass('orange');
$('#display_'+question_no).removeClass('blue');
$('#display_'+question_no).addClass("green");
$('#mark_review').attr('disabled', false);
}
var total_questions = $('#total_questions').val();
test_question_attempted_count( total_questions );
});
}
我想为这个函数分配 30 秒的超时。因此,如果在 30 秒内未收到 ajax 请求的响应,则应出现"您的互联网连接出现问题"的警报消息。否则,应该执行正常的函数。
谁能帮忙?
提前谢谢。
尝试使用
$.ajax({
type: "POST",
url: your_url_request,
data: {field: value, field_2: value_2},
timeout: 1000,
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
//do something on timeout
}
}});
您可以在以下位置获取更多信息:http://api.jquery.com/jQuery.ajax/
您可以在$.ajaxSetup
方法中为 Ajax 请求设置默认值,如下所示
function mark_unmark_user_answer(targ, answer, answer_id, test_id, test_type, question_no, module_url) {
if(checked==targ){
targ.checked=false;
checked=false;
} else {
checked=targ;
}
$.ajaxSetup({
type: 'POST',
timeout: 30000,
error: function(xhr) {
$('#display_error')
.html('Error: ' + xhr.status + ' ' + xhr.statusText);
}
})
$.post(module_url, {'test_id':test_id, 'question_no':question_no, 'op':'mark_ans', 'test_type':test_type, 'answer_no':answer, 'answer_id':answer_id}, function(data) {
if(jQuery.trim(data)=='unmark_ans') {
$('input[type="radio"]').removeAttr('checked');
$('#display_'+question_no).removeClass('green');
$('#display_'+question_no).removeClass('blue');
$('#display_'+question_no).addClass('orange');
} else {
//$('#mark_review').val('Mark');
$('#display_'+question_no).removeClass('orange');
$('#display_'+question_no).removeClass('blue');
$('#display_'+question_no).addClass("green");
$('#mark_review').attr('disabled', false);
}
var total_questions = $('#total_questions').val();
test_question_attempted_count( total_questions );
});
}
从 jQuery 1.2 开始,您可以通过 PlainObject 向 jQuery.post 提供所有参数。
因此,您的代码段可以像这样重写:
$.post({ url: module_url, data: { … })
- 只需打开jquery.js文件。
- 现在查找
jQtimeout
- 默认设置时间为
60000
毫秒,替换为以毫秒为单位的时间120000
120
秒 -
var jQtimeout = 120000;
看起来像这样 - 大功告成。
与希维什·钱德拉一起享受:)