|
|
首先,交代下背景:
9 k, }) t# l* ]最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
/ l; w# ]3 n/ N! l2 ?
( O+ `) o+ n1 Z* z$ \
* {$ I6 f- P3 j- g; j网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
& S8 N1 `9 z M3 ]
5 y5 m: h6 L( C- M& N7 X下面总结解决方法:9 d7 ?$ u* w3 N9 [
先看页面js代码- <script language="javascript">* W; `) J' F# c. p( @
- var questionID;4 O; p3 C4 g1 d Z8 v$ s
- function $(ID); e+ I7 T2 P Y
- {7 ?' k& q, L) Q! ]$ z
- if(document.all)
: q! s2 X, j/ A/ k. F" I1 ?2 G/ X - return document.all[ID]; [8 f/ K u# Y
- else if(document.getElementById) Y' `/ T% R4 J+ i! J9 q) c8 @
- return document.getElementById(ID);
) d6 j( k v3 C* T+ I - else
2 b' p7 G, [- J' Z7 n, E4 f - return null;
6 u7 d; U0 v( \0 Z) T+ `) x9 | - }; [9 N+ @: S2 U/ S4 Q
3 S% H' B# Y4 |+ A& p9 A6 u- function callback_test1(res)4 P. J! D9 r3 R
- {) Z. M3 l8 ^& b1 Q* o- J- x- {
- if(res.value =="-1")
2 w2 m7 x( Y6 G7 Y; a5 X& n3 T - {) e& k X) L* o- a$ F- [
- alert("必须输入数字");( j, o) H& a- m: |! e
- }
" d' ~3 n' K" T. g1 m; S - else if(res.value == "-2")9 t b- [# m# b7 A- [
- {6 ^, F3 g2 F0 D v9 V' W
- alert("得分不能超过题目标准得分");
) J7 @8 v4 @, ?) V: r - }0 J% m2 a6 W3 f1 a5 X7 I
- else{# b: |: z' M' U
- var array = res.value.split(",");; r8 t9 Y! K" X# t2 H* k
- document.getElementById("mark"+questionID).innerHTML = array[0];
, A0 U% V8 [ r. a! j" i - document.getElementById('totalMark').innerHTML = array[1];
' i9 @6 _7 P& _5 r- ^" l$ A - alert("修改成功!");
! e8 p8 m8 r1 }5 Y9 J - }
! \* R& h8 r/ o" f4 h! X. u. Q2 T -
$ \1 e6 a6 P$ B$ T1 K - }
1 F/ W& I4 L' S5 b* Z$ Z - function totalMark(spiID) s1 U7 w" f! J) A* V
- {5 U) T$ a) N* J! u
- AjaxMethod.TotalMark(spiID,callback_totalMark);
# D. J% W) V u/ B) B - }
7 t: n9 Q- e5 W% `+ \, Y8 J' ? - function editMark(btnID)$ Z/ j- M P2 v5 I
- {4 A/ N( Z: [% ^) f0 [$ ~
- var txtID = "txt"+btnID.substring(3,btnID.length);# R) A7 g( u( T5 V* _
- ! ~) _! M8 I9 `( ~3 } [( c( U- f( H
- var studentPaperID = document.all.hiddenSpi.value;
4 {) ]" C& S9 x7 s0 I H! O+ S - questionID = btnID.substring(3,btnID.length);
0 S( A( E' F' M6 P -
9 v4 \! o6 T. I( r: @; Y8 X - var mark = parseInt($(txtID).value);) d3 ~" a* @% d0 c1 S
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); # D ^/ n' f: J! U4 H+ r
- }' |8 j4 i, \8 h# b- ~6 d
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
$ Q' a! b7 U: k9 e! _. R5 ]( ?
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]4 L1 ?# P: }6 X0 k6 \
复制代码 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"/>
' |+ p2 t9 m5 s! e' Q' g# z
n" R. j. V0 V1 p0 _4 @- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加* f: F4 [8 d: m. E
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
! u4 o' m9 W8 k9 ^, l. n x
3 b5 R1 k4 o% ~: O$ H
; w- B0 N, Q# Y问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|