|
首先,交代下背景:! b4 |) K9 M- u/ O# ^, i
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:5 D/ W) i( v j
9 @0 ?% G" D T: L, x2 B l5 K
& |; C, q# e5 @1 [! t1 v. C网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
$ \) }) D* X' w, u/ ^2 c8 i! c; _: d! {3 E
下面总结解决方法:9 u0 N! @! i. O3 x: {* k
先看页面js代码- <script language="javascript">
+ f) b& L& r2 a# |7 d& Q - var questionID;
+ i' Y# w; m" g- m8 ]( K- G3 E - function $(ID)
+ ]+ C5 Z i7 O; {) `. ]% _/ G6 ^- C - {6 P, G; U# z. Q
- if(document.all)
" d+ y+ Z8 b- \, N9 i - return document.all[ID]; B3 R8 }$ O5 F1 E6 U! W
- else if(document.getElementById)
$ Z- G" T$ G3 Q- ]. _" Q - return document.getElementById(ID);
. {) s8 x6 o+ W* i) _ N( Z5 ` - else
/ o b: p }1 z9 B& X$ d, ]6 z - return null;
/ A8 ]; ^' E# t6 [5 W' j - }! p6 |3 w" f' x: }" s4 Y
) v G8 W7 g2 I3 K" `5 ~- function callback_test1(res)
" e; \! m- W# s7 H; X - {, e) E' [- Y3 Y# u9 N( o4 x9 R! ?/ m
- if(res.value =="-1"), r! C6 {5 Y. Q
- {# r0 r0 B/ c: o! J1 r
- alert("必须输入数字");
: P+ H7 L) @) d2 {4 @% d$ G, ? - }
0 K2 Q: i5 V6 w4 h3 i - else if(res.value == "-2")- [ ~: i. M' e: B
- {! Y! U/ _: l: Z+ P; i
- alert("得分不能超过题目标准得分");
6 \5 y2 W I5 D/ M$ f1 C - }
( ~$ E! M" c: Y9 m9 p6 c - else{
* X4 U* ~& |7 V" ?0 w# l4 c0 ? - var array = res.value.split(",");- [ G8 c7 X8 V
- document.getElementById("mark"+questionID).innerHTML = array[0];
* T- N; X% N# F/ ^1 @2 x4 N - document.getElementById('totalMark').innerHTML = array[1];
' b$ B+ c6 c2 I4 @. o# Q - alert("修改成功!");
- p. p L! A# [ - }
7 F4 `/ g) d1 G" q" T -
: p( J X& g: I f& X9 r" r6 ] - }# x) |4 Q! \( [: g# E+ N
- function totalMark(spiID)
' x- H! [) V% V. K - {& v1 _6 Q( u; S9 H
- AjaxMethod.TotalMark(spiID,callback_totalMark);
' _" [& ?# n8 D - }8 h! V. t3 p& R1 f
- function editMark(btnID)
/ k4 W+ b% V' C( O8 [ - {
5 p) ~6 g* C; y8 m - var txtID = "txt"+btnID.substring(3,btnID.length);
# a4 [# q- W [. Q4 F3 t - 7 M |! a7 @ o
- var studentPaperID = document.all.hiddenSpi.value;
) G5 v" {4 ?/ c" U3 k( M - questionID = btnID.substring(3,btnID.length);4 J- ]7 ?) l; I; Y8 U2 c
-
& }. G, J+ T/ j# ~+ ^9 `: l - var mark = parseInt($(txtID).value);
+ V, v7 c7 _( y! C1 W+ g" |; u - AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
2 q/ W) B8 i! l9 |( f - }, I7 [+ Q# n0 A; r5 h; b
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
. I, I) w: x. s" O6 C' N$ F* ^
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
, D, ]! g" y: V- ?# }: R& C3 W( ]
复制代码 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"/># Y! h7 H+ `4 Z: C8 r3 `7 u
- : y2 s4 }: }: W9 [3 ]
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
0 Y) c" v* |8 f1 g+ @
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
5 c$ g+ k. ` {; s
0 d5 S C7 E- U- ~( M7 I6 @3 M) v0 W: v! s' h
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|