2011-12-27 2 views
2

Я использовал код в js setTimeout, он работает в firefox, i, e перезагружается за считанные секунды. но не работает в IE. Я изменил метод как «POST», но запрос не поддерживается, а затем снова изменился на «GET». Любое решение?Передача параметров обратного вызова в setTimeout() не работает в IE?

function getCallDetails(cId){ 
    $.ajax({ 
     url : 'callInfo.html?cId='+cId, 
     method : "GET", 
     dataType: "json",  
     success : function(data) { 
     callResult=data.rows; 

     showCallDetails(callResult,cId); 
     }, 
     failure : function(form, action) { 
     } 
    }); 
    window.setTimeout(getCallDetails, 1000,[cId]); 

} 
+0

Для дальнейшего использования, пожалуйста, включите версию IE (обновите сообщение по мере необходимости). Кроме того, пишите на запрос XHR * и ответ * в таких ситуациях. (Я не уверен, что предлагает IE, но всегда есть fiddler2.) Он будет показывать странные данные. –

+0

Я использовал обе версии 8 и 9 IE –

ответ

4

Try:

 
window.setTimeout(function() { 
    getCallDetails(cId); 
}, 1000); 

Надеется, что это помогает

+0

Я пробовал этот путь, но не получил .. –

+0

thats странно ... –

6

Вы используете не-IE-совместимую версию setTimeout.
В IE нет способа передать параметры обратному вызову.

Кроме того, при вызове setTimeout есть очень плохое; вы получите экспоненциально более параллельные запросы, потому что каждый вызов вызывает еще два вызова.

+1

Все браузеры поддерживают отправку аргументов в setTimeout, кроме IE. Вместо этого IE вместо этого отправляет вместо этого параметр языка (vbscript, jscript или JavaScript). –

+1

@MattGreer: Я этого не знал; Благодарю. – SLaks

+1

+1 только для указания поведения «вилочной бомбы». Тем не менее, он пропускает «как решить эту проблему». –

6

Попробуйте следующие вместо:

window.setTimeout(function() { getCallDetails(cId); }, 1000); 

Кроме того, я бы переместить эту строку в функцию обратного вызов успеха.

+2

Но зачем переместить его на обратный вызов успеха? (И что происходит при неудаче?) –

+0

@pst: Это проблема OP. – SLaks

2

это связано с проблемой кэша в IE

это решается

function getCallDetails(cId){ 
     $.ajax({ 
      url : 'callInfo.html?cId='+cId+'&randomNo='+ Math.rand(), 
      method : "GET", 
      dataType: "json",  
      success : function(data) { 
      callResult=data.rows; 

      showCallDetails(callResult,cId); 
      }, 
      failure : function(form, action) { 
      } 
     }); 
     window.setTimeout(function() { getCallDetails(cId); }, 1000); 


    } 

и случайного не игнорировали стороне @ сервер.

+0

это также полезно: $ .ajaxSetup ({ // Отключить кеширование ответов AJAX cache: false }); –