|
|
首先,交代下背景:
3 e2 Q5 S! r! U最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
/ {# z& H8 W3 f9 _8 V( X/ ]- o5 k. }, v8 G3 \9 Z: w- ~* }' F3 D
9 E; c* m' B; B/ D3 |! v
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...7 w' }' ~* e, j) Z; G/ R1 g# ~2 w2 O+ @
L. t6 ^/ g- j5 P
下面总结解决方法:! O$ t6 u" Q0 Y: f
先看页面js代码- <script language="javascript">
) `& |2 P5 o3 H; I9 u' }" u% a - var questionID;
# O0 U4 E: u5 F$ F( w - function $(ID)
- z4 [' I* Y0 n9 c - {, O# f# C5 f, J7 v: H! S1 j4 d/ o- Y
- if(document.all)
- _3 `- c' u' U. y h2 Y5 ~+ V8 ` - return document.all[ID];" h* X) w+ U) k$ L
- else if(document.getElementById)
8 K, a2 G+ ~2 w- N3 d A* p - return document.getElementById(ID);; f2 q+ P% |* e" j# o6 ~. T
- else
# F" y/ \$ B; r1 p0 @ - return null;
! S- R+ {1 x5 E4 b( a4 ?( y - }
. R' Q' N1 f: `5 B0 Y - , d6 n1 D3 l( C( R+ G, g
- function callback_test1(res)3 v, ?" w# g3 g' @ E; |
- {* V% Y- y4 {$ T: j8 I( C9 {4 H0 ?
- if(res.value =="-1")3 l; N5 w/ l! }/ q+ S5 s
- {
& L' N8 x* `# K - alert("必须输入数字");
: m! n8 [5 z! C - }
4 ?) l: Z1 R2 |+ h - else if(res.value == "-2")4 O( w$ r8 G, x# e0 j- k0 A" l6 E
- {
7 v2 \2 ~' y5 K - alert("得分不能超过题目标准得分");
' i L% D! K2 i. ]8 _5 x - }. h8 m- F" _# w% W. W
- else{
4 L: \2 r# E3 F - var array = res.value.split(",");
' I+ q6 _2 h/ q8 u( p: E% A - document.getElementById("mark"+questionID).innerHTML = array[0];
: D' t9 K9 x( R - document.getElementById('totalMark').innerHTML = array[1];
6 E: @! p6 J8 h, b- Q2 L; m - alert("修改成功!");% G1 D: ]( z3 O: x% W! Y
- }: Q% R' V. ? h- {) t/ ~
- b m' {% v8 ]( I/ s
- }
( u( A; R8 c$ D. r. ?& Y+ R1 [: Q5 g - function totalMark(spiID)
* `, B4 ?* {7 |+ U0 R, p) ] - {
: [/ z: G7 {1 X* ^+ ]' R5 R - AjaxMethod.TotalMark(spiID,callback_totalMark);* b. C7 A7 o* E+ _' D1 t
- }9 n/ l. Q* g3 q9 M( B6 k+ r, V7 N
- function editMark(btnID)" R+ S8 w5 j; ^3 O
- {
9 W/ t) m5 G0 g9 _# |9 a - var txtID = "txt"+btnID.substring(3,btnID.length);1 |; t# `$ W2 v- ]: ~% U0 A" q
- : A7 e0 y* g) O" }
- var studentPaperID = document.all.hiddenSpi.value;
( l8 d. [' N) e9 c3 o - questionID = btnID.substring(3,btnID.length);
- b0 V" t) r# m& f/ W) ~( z1 S- Q- w - 0 X K# _$ k& Q
- var mark = parseInt($(txtID).value);5 U0 ^# s( t+ x1 g9 r3 R' _; B
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); % z( T3 L" m: V* j. g5 n3 \
- }
" K+ q0 h: ^% ?6 ^* v2 ~& C" Z) m' Z - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
; [( G6 r- T u+ K
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]) e( I% t7 f, W* M4 f" T7 G& Q
复制代码 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"/>
, `, v( h5 b. Q" m2 t: E q - ' n, e* _$ C8 @* n, \
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
% ^& y v0 Y+ z p
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”9 ?0 u7 E% |. k$ A# v: K% j
L7 ]: `! w9 z
0 i; _: B3 d2 O) _6 }问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|