|
首先,交代下背景:; p% t/ S1 M! ~; }) g( n( ~* a
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:; A; v; U/ |% _0 J7 u# Z9 R) ~
$ q) h4 n6 E4 @0 ^" w: Z. k# D) h; m; \ Y6 b/ [1 J1 U
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
- ?4 D7 Q( q* d0 D ]
+ V5 z' A o0 A) {. s# f下面总结解决方法:, P4 W+ L& d' ^, Q5 Z8 u
先看页面js代码- <script language="javascript">( L4 O. w+ E6 E' h9 q0 h2 {
- var questionID;1 p2 N6 o7 A) A4 L
- function $(ID)+ [5 D8 Z: L/ Y
- {
( R, i0 J. L! X1 }8 ^% d7 z - if(document.all)
! B0 J( p0 X1 G- t$ ~5 E8 ~ - return document.all[ID];. Z# n- E6 }# _ u, U/ U
- else if(document.getElementById)
0 v5 O2 P8 w( C! p) }$ [9 A - return document.getElementById(ID);, J q. P! n2 q
- else/ j6 a1 ^& p* L
- return null;) Y% b. j9 L t+ W7 H; D2 U# ^* f3 L/ E
- }
" a/ N: ?! _/ _* [3 X9 ^
4 N5 w' |7 W. O2 D, @) F2 I$ l- function callback_test1(res)
! f o3 R2 M2 R; R1 d - {9 n6 S o x, X
- if(res.value =="-1")3 c2 e8 y. N! E
- {- r; e2 g- p% W: ^+ s9 B+ P
- alert("必须输入数字");
& b G1 C" }7 x; o, A# N - }
2 {5 W4 x9 O# {6 v - else if(res.value == "-2")6 i- y0 ~ I6 a$ `1 }
- {
; n/ l. i2 d6 D* Q2 Q( T4 c$ J - alert("得分不能超过题目标准得分");' b$ P8 q1 H! a, Z9 ?
- }" |) `2 d7 \* b1 k$ _$ ~7 |
- else{
4 s$ E2 Z/ U, H. C9 l - var array = res.value.split(",");
7 {8 b- y( j9 e2 O- u# k3 R - document.getElementById("mark"+questionID).innerHTML = array[0];
8 f: u: M; R- c - document.getElementById('totalMark').innerHTML = array[1];& `1 @" r; w* ^
- alert("修改成功!");
! W8 c' l M4 Q - }
8 Q8 u9 t. b; a* b -
- }9 k$ E9 H1 x6 F3 w5 I6 \. S" o - }9 W' L2 f8 q4 H' m
- function totalMark(spiID)9 m, x! I- `* U. _
- {
7 A3 E# Y8 u0 i, A1 W- W - AjaxMethod.TotalMark(spiID,callback_totalMark);+ M7 G; X2 v9 s2 r5 c
- }7 I# a# \& z+ d
- function editMark(btnID)1 n6 N- S7 e( u) b+ Y2 ?8 O6 S
- {
, V8 T* W0 M! W$ I6 S4 { - var txtID = "txt"+btnID.substring(3,btnID.length);
' D0 K& V( \; F8 e* g9 T; V% D* `
- @- v" o0 g' o+ g- var studentPaperID = document.all.hiddenSpi.value; h2 h& j3 x+ W5 L
- questionID = btnID.substring(3,btnID.length);
& `) f% a: r! t9 Q2 I - 0 @1 U9 ~- L/ g
- var mark = parseInt($(txtID).value);9 o3 H% A% C8 [
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); ( r" ^: i( P$ U* \7 A* f) q, ]
- }) S4 C7 J, V; ~' ~; C
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));+ F( b: {9 T4 L( P4 J: w2 K; d
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
+ s7 }/ L( [) c. g
复制代码 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"/>. [+ G- I- Q N
7 [ r; }! x4 M$ R- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
$ U9 P, Q# T5 J( r
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
, U y3 i8 z3 m9 p) i9 [/ r
" ~. V: W& f/ D& I4 I* ^" k/ [6 D: a) z" t2 R. I1 X
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|