|
|
首先,交代下背景:# Z7 a2 X# t. M1 {
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:! o2 f* p; R8 i% L
( _+ @' @; ? A& k
& t) p3 z* k& e2 x/ s4 ]; v网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
+ V8 `; x3 j5 D+ H0 z5 @
8 B2 g2 X. T- a U; o6 x. }下面总结解决方法:
3 D: Y& B$ d1 C先看页面js代码- <script language="javascript">* C8 A8 H! ^% S: ^! ~
- var questionID;
) p1 `7 L+ @6 b/ `1 T - function $(ID)8 ]$ Z7 a; N% i2 D; T- g! F4 {
- {
7 h6 r2 `, E0 v+ S- ~0 C+ t4 p - if(document.all)/ H& d; q4 d, K
- return document.all[ID];
6 ~2 ?+ p7 f; N& c. C( B! f k - else if(document.getElementById): J7 [, q. B& h# p1 \6 X
- return document.getElementById(ID);
* W5 a. O6 e9 [" w. ` - else
a7 o6 J) H9 y) k - return null;
( ?: C" {1 {7 o$ R - }
" l9 @) P5 z5 \ - 0 E2 [6 O) y; Z9 _- H% X8 M, p
- function callback_test1(res)7 A2 j5 H. v# y0 k# c4 b7 ]' Y
- {* r, f" n0 ?# Z$ t: F
- if(res.value =="-1")5 \& J' M! J. t! g+ j/ n8 L
- {1 P$ E+ I& H/ H' E
- alert("必须输入数字");# C3 k1 K) O+ L
- }
0 f5 e, t8 c' O! n! I - else if(res.value == "-2"). g5 X4 e' N! r# t5 F- r( C
- {0 y6 H8 O6 q/ O2 y9 D; f
- alert("得分不能超过题目标准得分");# q: |" a) w9 r5 |
- }
, q' ?) U. v/ S - else{: J7 }# T/ X8 [0 n+ F1 f8 e' D. `
- var array = res.value.split(",");8 U1 ~- R, o5 y. t% g
- document.getElementById("mark"+questionID).innerHTML = array[0];
1 d7 }2 U. S$ c4 N! V - document.getElementById('totalMark').innerHTML = array[1];; R; H1 X5 q Y; e# k% E+ |
- alert("修改成功!"); G! B' I* O2 R) N+ U/ Y1 ]
- }
; \ E3 e8 `" n( b: c; q! Z- U8 H -
. X+ p5 j4 I* R6 x9 k% y: h* i, y - }
( I. u0 |' y- {( i4 e - function totalMark(spiID)+ ]2 @: _+ {3 N
- {" [) L T0 D: ^- V, d
- AjaxMethod.TotalMark(spiID,callback_totalMark);) \ P }+ W! U9 S% S
- }3 t1 z, P U9 J; P) M9 ^7 X4 S- Y2 W
- function editMark(btnID)
; h1 q6 B% D8 h4 I - {9 W$ _" w+ `/ i) h% G4 P9 j: b" B3 ~
- var txtID = "txt"+btnID.substring(3,btnID.length);
, H1 |( j2 K8 _" o1 { - ' Y$ X9 ]2 w! k9 ^& q
- var studentPaperID = document.all.hiddenSpi.value;$ w; F# \2 a; D% w
- questionID = btnID.substring(3,btnID.length);
: Z- j+ j, L9 o c - 1 g @0 c. v1 z% e0 `
- var mark = parseInt($(txtID).value);
. l3 ?( @2 ^, t: A3 X9 z - AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
`+ J+ t0 ], g7 ]& d - }
. ~' K( \7 t* w/ U. O1 B - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));9 n: S J' e% u5 Y& D" r* |* m
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]- c8 D+ F7 B/ G' W7 ?2 v h2 y8 B
复制代码 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"/>' X: p2 T }& L5 ?) c+ c) F! k! \
2 ]2 f! Y3 n$ i8 e& v+ j) ]! P9 O- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
2 X/ V1 }/ A6 r* U3 B& ?
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
# U H8 u$ Q0 l y& r ], a
5 z( T# d9 U+ n: `# M8 P' S
0 [$ V' y' x9 }" a) {. G问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|