出錯的原始代碼:
?1 var ?factNo? = ? " 0240 " ;?
?2 var
?defaultDate;?
?3 var ?endPoint? = ? " <%=request.getContextPath()%>/bfapp "
;?
?4 var ?buffalo? = ? new
?Buffalo(endPoint);?
?5 function ?loadCexpbver()
{?
?6 ????buffalo.remoteCall( " cexpbverService.listAll " ,?[],? function (reply)
{?
?7 ???????? var ?list? =
?reply.getResult();?
?8 ????????defaultDate? = ?list[ 0
].updateDate;?
?9 ???????? var ?strTable? = ? " <table?width=\ " 98 % \ " ?cellpadding=\ " 3 \ " ? "
?
10 ???????? + ? " cellspacing=\ " 1 \ " ?class=\ " TableBorderLight\ "
?
11 align=\ " center\ " > "
?
12 ???????? + ? " <tr?class=TableTitle><th>Update?Date</th> "
?
13 ???????? + ? " <th>User</th></tr> "
;?
14 ???????? for ?( var ?i = 0 ;?i < list.length;?i ++ )?
{?
15 ???????????? var ?className? = ?(i % 2 == 0 ) ? " TableBodyLight " : " TableBodyDark "
;?
16 ????????????strTable? += ? " <tr?class= " ? +
?className?
17 ???????????? + ? " ?onclick=\ " loadCexpbodr(' "
?+?list[i].updateDate?
18 ????????????+? " ')\ " ?style=\ " cursor:pointer\ " > "
?
19 ???????????? + ? " <td?align=center> " ? + ?formatDate(list[i].updateDate)? +
?
20 " </td> "
?
21 ???????????? + ? " <td> " ? + ?list[i].userNo? + ? " </td> "
?
22 ???????????? + ? " </tr> "
;?
23 ????????}
?
24 ????????strTable? += ? " </table> "
;?
25 ???????? var ?table? = ?$ { " cexpbver " }
;?
26 ????????table.innerHTML? =
?strTable;?
27 ????}
);?
28

29

30 }
?
31

32

33 function ?loadCexpbodr(ud)
{?
34 ????buffalo.remoteCall( " cexpbodrService.findByUpdateDate "
,?[factNo,ud],?
35 function (reply)
{?
36 ???????? var ?strTable? = ? " <table?width=\ " 98 % \ " ?cellpadding=\ " 3 \ " ? "
?
37 ???????? + ? " cellspacing=\ " 1 \ " ?class=\ " TableBorderLight\ "
?
38 align=\ " center\ " > "
;?
39 ???????? var ?list? =
?reply.getResult();?
40 ???????? for ?( var ?i = 0 ;i < list.length;i ++ )
{?
41 ???????????? var ?className? = ?(i % 2 == 0 ) ? " TableBodyLight " : " TableBodyDark "
;?
42 ????????????strTable? += ? " <tr?class= " ? + ?className? + ? " ><td> " ? +
?
43 list[i].partNo? + ? " </td> "
?
44 ???????????????? + ? " <td> " ? + ?list[i].style? + ? " </td> "
?
45 ???????????????? + ? " <td> " ? + ?list[i].width? + ? " </td></tr> "
;?
46 ????????}
?
47 ????????strTable? += ? " </table> "
?
48 ???????? var ?table? = ?$ { " cexpbodr " }
;?
49 ????????table.innerHTML? =
?strTable;?
50 ????}
);?
51 }
?
52

53 window.onload? = ? function ?()
{?
54
????loadCexpbver();?
55
????loadCexpbodr(defaultDate);?
56 }
?
57


我的分析:

?如果把 window.onload 改為
window.onload = function (){
??? loadCexpbver();
??? alert(defaultDate);
??? loadCexpbodr(defaultDate);
}
就不會出錯. 原因我已找到,應該是第一個Request的狀態還未完成時,就執行了第2個的原因,中間加行alert(defaultDate);實際上起到了延遲執行loadCexpbodr(defaultDate);的作用,所以不會報錯.

但是目前還不知道該如何解決?