出錯的原始代碼:
?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

?2

?3

?4

?5



?6



?7

?8

?9

10

11

12

13

14



15

16

17

18

19

20

21

22

23

24

25



26

27

28

29

30

31

32

33



34

35



36

37

38

39

40



41

42

43

44

45

46

47

48



49

50

51

52

53



54

55

56

57

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