2009-12-08 28 views
-1

看這段代碼的傢伙:存在一個JavaScript回調緩存?

<script type="text/javascript"> 

$("#<?=$delete_uid?>").click(function() { 
    var id = $("#<?=$grid_uid?>").jqGrid('getGridParam','selrow'); 
    alert(id); 
    if(id == null) { 
     $.jGrowl("No selected Item"); 
     return; 
    } 

    confirm('Caution','Delete current selected item?', function(result) { 
     if(result==true) { 
      alert(id); 
      url = "<?=ADMIN_URL?>/account/delete/id/" + id; 
      execURL(url, function(result) { 
       if (result==true) { 
        $.jGrowl("Item removed!!"); 
        $("#<?=$grid_uid?>").trigger("reloadGrid"); 
       } else 
        $.jGrowl("Remove failure!!"); 
      }); 
     } 
    }); 
}); 
</script> 

OBS:警報僅供調試。

在第一次通過ID來自jqgrid其寫入一切都可以,但在第二次只有在確認函數回調id回調保持第一個值。

請幫忙,在此失去3小時!

+0

這不是很清楚......你能解釋一下嗎? 「alert」顯示什麼?你能指望什麼? – Kobi 2009-12-08 12:08:54

+0

allert如果僅用於調試目的,則顯示當前選中的我的jqgrid的行ID。在這個旋轉警報的第二個調用是正確的兩個,但在URL變量的ID登錄mantain最後選擇的ID! – JoeLoco 2009-12-08 12:12:48

+0

這個問題有許多語法和拼寫錯誤,很難讓人理解。嘗試使用拼寫檢查器或要求朋友爲您寫問題。 – kgiannakakis 2009-12-08 12:32:29

回答

1

嘗試使用不同的語法來確認功能。不要將函數傳遞給它,但使用其返回值作爲結果:

if(confirm('Caution','Delete current selected item?')){ 
      alert(id); 
      url = "<?=ADMIN_URL?>/account/delete/id/" + id; 
      execURL(url, function(result) { 
       if (result==true) { 
        $.jGrowl("Item removed!!"); 
        $("#<?=$grid_uid?>").trigger("reloadGrid"); 
       } else 
        $.jGrowl("Remove failure!!"); 
      }); 
}; 

這應該有所幫助。