2013-03-19 47 views
1

我發現這SOF問題..但沒有找到解決方案..調用onreadystatechange的回調函數的參數在阿賈克斯

這是我的代碼..

if (mefofftasksxmlhttp!=null) 
     { 
      mefofftasksxmlhttp.onreadystatechange=sasi_ready(taskId); 
      mefofftasksxmlhttp.open("GET",url,true); 
      mefofftasksxmlhttp.send(null); 
     } 

回調函數

function sasi_ready(tskId) 
     { 
      if (mefofftasksxmlhttp.readyState==4) 
      { 
       if (mefofftasksxmlhttp.status==200) 
       { 
        alert('Task Moved to completed Tasks'); 
        $('#'+tskId).hide(); 
       } 
       else 
       { 
        alert("Problem retrieving XML data"); 
       } 
      } 
     } 

這段代碼不允許我進入回調,當我在回調函數中傳遞一個參數..但是當我刪除parameter..thats wo精細..

我去哪裏錯了?

+0

喜SASI u能解釋清楚 – PSR 2013-03-19 09:45:59

+1

'= sasi_ready(任務id)調用一個函數,這個參數?你需要附加一個函數,而不是調用一個函數(除非它是一個返回函數的函數,而sasi_ready沒有)。 – 2013-03-19 09:48:58

回答

2

由於@ Beetroot-Beetroot已經說過:您需要將函數引用傳遞給onreadystatechange。 `;如果你想傳遞一個參數,你仍然可以只要這個函數會返回一個函數引用

function sasi_ready(tskId) { 
    return function() { 
     if (mefofftasksxmlhttp.readyState==4) 
     { 
      if (mefofftasksxmlhttp.status==200) 
      { 
       alert('Task Moved to completed Tasks'); 
       $('#'+tskId).hide(); 
      } 
      else 
      { 
       alert("Problem retrieving XML data"); 
      } 
     } 
    } 
} 
+0

我有,角色的特點,坐在我的編輯器中的相同代碼,準備發佈。但現在不需要@ devnull69。 – 2013-03-19 10:03:11