|
首先,交代下背景:
( B" \" K- b+ n/ O1 {' ]. e/ |最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:: v9 K- ~5 Z3 E A# P7 U
; k, M% ?4 S& r; o" g# a
. e6 G& o/ X. |7 C
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...7 q3 S4 V2 X! p5 u" o1 t# S: \
) V- _1 g. k4 |$ Z& {
下面总结解决方法:, O% G7 X6 t: t9 \2 A4 K# {
先看页面js代码- <script language="javascript">! p, ~" a% z2 G3 p2 _, G7 }2 O
- var questionID;& e D9 v6 g* O0 ]
- function $(ID): ^' {7 O7 o, B! T( k3 l# w* S l1 N
- {
& }' T/ T8 y# C x( u/ a - if(document.all)
0 G. y3 ^1 w9 \8 z - return document.all[ID];9 P5 j) q: M. V
- else if(document.getElementById)
A3 f$ D* j* T2 R. _( j - return document.getElementById(ID);
) @7 j& G$ p; ]" M, W - else
+ P2 X- y- \ p+ ]! [ - return null;6 K4 m. X' }* Y2 h
- }
& F4 C. S$ Y) z - - C( O# V) C3 B: k9 \
- function callback_test1(res)
9 n" k$ \& D l# i0 ^7 c - {
/ p6 P' v# }8 p# V5 j% S, ? - if(res.value =="-1")" D, E9 ~) t* \+ e1 k1 F4 U V1 w
- {, M9 Z+ ]3 ^9 E3 [) R( m7 t
- alert("必须输入数字");0 x) p9 h: y: F, E
- }+ k; W6 M0 O, X
- else if(res.value == "-2")
3 D$ K1 C% g0 Y& @* y - {
3 o9 Y- o. r! f @" r4 R - alert("得分不能超过题目标准得分");9 @0 n" S U! U
- }
" V; \! m1 _+ J# }! _ - else{: B/ G$ }2 s/ p6 B" ]7 h; S6 i
- var array = res.value.split(",");
& A" ]9 f" f2 w2 W& E% N, w$ R - document.getElementById("mark"+questionID).innerHTML = array[0];% V* B$ J3 J! H4 B2 w: s% X- u* `: e
- document.getElementById('totalMark').innerHTML = array[1];
. ?/ M6 Q0 q2 V2 v8 O$ s G) | - alert("修改成功!");# ]2 y, K( b; e7 D) l2 ]
- }; X& ?# y4 Q, h) Y. J! n, z' K
-
/ j- ]9 H: m& G/ v' ? - }
; g N6 Y5 t! T: r! O - function totalMark(spiID)
$ y$ L- x# k' @/ S - {
* ]# z+ I% v* e3 y4 X - AjaxMethod.TotalMark(spiID,callback_totalMark);% j4 O2 M- D3 q, j- D
- }+ B& T0 j* I* y! l$ i
- function editMark(btnID)
9 r! f. T0 i" G) e }; p6 |0 s( W$ O - {5 U! q, s0 q4 H$ a4 F3 E1 M' x' A
- var txtID = "txt"+btnID.substring(3,btnID.length);
( F. v) S9 ~- ^ - 4 X# h! l+ `4 f9 x$ @
- var studentPaperID = document.all.hiddenSpi.value;
: ` ^2 {- O0 z - questionID = btnID.substring(3,btnID.length);
0 W& Z5 _. w" t" f -
5 @1 e6 `$ q3 S' q# X - var mark = parseInt($(txtID).value);) \5 r& _# s% u: d' W
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); ( ?4 l0 j% q3 N. Z6 m$ f' n: x
- }
4 l) Q8 n0 V4 h1 E - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));" \8 K& { s* t- y
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
, A" X: \; @6 Y, Z9 k! 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"/>" N8 O F0 O# M o# |( v1 Z
- ) k7 D& N' w( B/ C; O* v H
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加! J5 M1 P2 Z0 ~ d! U3 g
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
7 f+ H- Z, n" h! { w8 Z' l: M; g7 b2 x7 Z9 G+ v0 V
0 ^0 j h( E; k9 L0 G
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|