|
|
首先,交代下背景:8 c& s$ l2 b* r0 I# M% E' G
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:0 \; L6 D2 g5 [6 o1 k
- N$ j9 T6 F5 \2 s
. x7 P3 c) y( d/ e$ [$ Z1 w网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
& f, ?( `; \. Z) h9 @5 d$ H5 ]+ {' ~& g1 y1 Q# Z* m
下面总结解决方法:' P( O0 h" X6 Z% V& N; v
先看页面js代码- <script language="javascript">& j& u. q! g$ D M0 d. H6 y
- var questionID;! I/ q1 S- ~$ E: [5 ]5 z, T
- function $(ID)) f* @! y8 W+ T# X+ v+ n
- {
5 e; _, }1 W1 y0 I - if(document.all)9 D" Z/ W0 [9 T( ~0 z5 G
- return document.all[ID];! f: A0 \ p# G. U
- else if(document.getElementById)
2 H8 I; a, [2 y4 J. p - return document.getElementById(ID);% W; B& R# r+ n
- else: W: b L1 ?9 c/ n
- return null;- G: M6 ~3 K# ^: H( A4 b. E
- }) l& }0 K F; n/ _% V( A! T6 o
! E* ]) D7 p3 d+ x% B- function callback_test1(res)
$ \/ a- R* J3 {* ` - {, l$ B6 {- E/ f. Z* ?, \) Z+ R
- if(res.value =="-1")
+ I- a5 g3 J2 `; i2 y - {
( f1 X& H3 X7 ? - alert("必须输入数字");2 G0 N0 J% ?! t/ F9 p2 M1 ]
- }
# x) p) N4 u% j* C5 B - else if(res.value == "-2")
+ }5 g5 h" h! y) b2 m0 V5 }* g - {
. V. ]6 f4 `* C - alert("得分不能超过题目标准得分");9 }4 _6 g. q5 I
- }
0 [ u. a- R/ m7 j9 S% L - else{/ l2 y1 S o( Q) \7 K1 O
- var array = res.value.split(",");3 V$ y5 r' E6 o8 Y
- document.getElementById("mark"+questionID).innerHTML = array[0];7 A4 I t+ }$ X% g
- document.getElementById('totalMark').innerHTML = array[1];3 z. e) ?2 ~8 r" `- G+ c0 t6 U
- alert("修改成功!");1 x( k+ h8 E% T$ M9 @7 g2 z( D$ }$ D
- }
; l. E [+ Y$ e% C: G* x; I - 8 T2 W2 I; C; d% i7 |' D u
- }' w0 C7 C! ?, U' I3 R6 H" X
- function totalMark(spiID)
7 f9 S v* O) i. _ - {
: X$ ^% `% J) h3 `- c. w - AjaxMethod.TotalMark(spiID,callback_totalMark);
7 ~/ O0 @# m: W# D' z) k9 T( n0 s! E - }1 a7 [: N5 b# H
- function editMark(btnID). L7 O, y; q+ }
- {% S! \) K2 F% M! D1 Q
- var txtID = "txt"+btnID.substring(3,btnID.length);
+ N, L; E# }: r, b: n+ j- I - / ]: u* o$ D( N8 {) F& F" n' U& z
- var studentPaperID = document.all.hiddenSpi.value;
2 v3 ]$ W3 ~$ U3 | - questionID = btnID.substring(3,btnID.length);
, I4 M n% E6 x -
" \" f) K5 d) _# U - var mark = parseInt($(txtID).value);1 o1 y& m/ Z9 `7 C- {; r* u/ M) P
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); * U7 H& K+ E3 V6 ~& f
- }) O2 j9 ^; h4 J
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
6 @0 u8 p) K# f' T
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
2 {3 P3 P- p; W% W f: s
复制代码 3.Global.asax的Application_Start方法添加- Ajax.Utility.HandlerPath = "csharpwrapper";
复制代码 4.web.config中的<httpHandlers>和<handlers>分别添加- <add verb="POST,GET" path="csharpwrapper/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>% B' c# g" R {
- & F9 q8 x) u' G6 y* \# _
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加* x) u; i: [( E" m
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
& T0 \5 B4 e9 F3 }
) g- [0 H2 T% {, H4 i" m* P6 T2 B! g" Q" v
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|