我有一个网站,我有set_timeout在一段时间后调用ajax 当ajax调用在后台运行时,我无法输入单个单词。 这是我的代码..
我有几个字段,如textarea和输入,但只要ajax调用在后台运行,我就无法输入。我也禁用了触发功能,但是如果任何ajax调用运行,我面临同样的问题。
var Trigger = function(){
var jsondata={action:"trigger"};
CallAjaxPW('', jsondata, 'ajax_trigger.php', function callBack(data) {
var parsed_data= jQuery.parseJSON(data);
if (parsed_data)
{
if(parsed_data[0].messages>0){
if($('#msg1').css('display')=='none'){
$('#msg1').show();
$('#msg1').text(parsed_data[0].messages);
}
else{
$('#msg1').text(parsed_data[0].messages);
}
}
else if(parsed_data[0].messages==0){
$('#msg1').hide();
}
if(parsed_data[0].friend_requests>0){
if($('#friend_requests').css('display')=='none'){
$('#friend_requests').show();
$('#friend_requests').text(parsed_data[0].friend_requests);
}
else{
$('#friend_requests').text(parsed_data[0].friend_requests);
}
}
else if(parsed_data[0].friend_requests==0){
$('#friend_requests').hide();
}
if(parsed_data[0].notifications>0){
if($('#noti').css('display')=='none'){
$('#noti').show();
$('#noti').text(parsed_data[0].notifications);
}
else{
$('#noti').text(parsed_data[0].notifications);
}
}
}
else
{
}
});
};
/////////////////////////////Calling Trigger////////////////////////////////////
setInterval(Trigger,10000);
////////////////////////////////////////////////////////////////////////////////
function CallAjaxPW(form, postData, url, callBack, b, c)
{
var sendData;
if (form == "")
{
sendData = postData;
}
else if (postData == "")
{
sendData = $(form).serialize();
}
$.ajax({
type: 'POST',
url: url,
cache: false,
async: true,
beforeSend: b,
complete: c,
data: sendData,
success: callBack,
error: function(httpRequest, textStatus, errorThrown) {
console.log("status=" + textStatus + ",error=" + errorThrown);
}
});
}
答案 0 :(得分:0)
执行以下操作,每隔x秒触发一次代码。否则,即使最后一个未完成,也会进行新的调用。并且(我不会对此声明不感兴趣)javascript比setInterval更喜欢setTimeout,这会提高性能。
function trigger() {
//working stuff here in sync
//call set timeout AFTER ajax request has completed
setTimeout(function() {
trigger();
}, 1000);
}