|
首先,交代下背景:
- }5 p8 O, [, u0 P" w6 I$ I最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
& b& a- D4 R' C5 q% s) ]
% [% x/ [2 h2 a+ a
9 Q# ^ }' i+ P( Q, G4 A( @7 Y网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
! e+ w+ t' W0 U% M* x) f. G% ~, `0 y' ?+ C1 |1 x' O
下面总结解决方法:0 x, [) X2 I' Z2 V
先看页面js代码- <script language="javascript">8 |( f8 F5 c9 w8 Z3 q) R
- var questionID;( Q5 D8 j4 A+ y: _
- function $(ID)
3 Z) o9 ~2 U$ h6 ? - {$ b K" r, o; k( f
- if(document.all)
, _( @, Z) ?& m) N - return document.all[ID];
# R) x0 P8 e3 o1 ]* c2 x! a6 ^& c - else if(document.getElementById) F* `+ _$ Q! P& b0 ~! j
- return document.getElementById(ID);
4 b: e% _6 s+ n F3 Z - else
9 A& Z$ J* L/ i - return null;! n7 L' w, A; n5 T( v- p
- }
) z3 v* m+ r9 G& \, o0 a( H
9 Q$ j8 t" K( w- T- R- x- function callback_test1(res) m" C W0 g7 B2 W& w; u/ ?
- {
6 E* J, j3 r5 Y5 P - if(res.value =="-1")+ T$ q6 S2 k# o( G0 ~7 F
- {
# [$ @' `5 q4 C8 o1 C* H( y - alert("必须输入数字");
. t! [, c; p9 O& _0 K - }
& I+ \4 j. o* L& A - else if(res.value == "-2")' V6 S3 u; ?! o) K
- {
. g4 d, v8 O1 b0 i* B - alert("得分不能超过题目标准得分");
: u4 A# s' Q0 K - }
5 p; r3 L/ P4 g3 ^# g - else{
) w! d- e3 g- ?5 q% P. s7 c* u - var array = res.value.split(",");
% r8 u8 r8 i' v8 I4 G3 M5 X+ t: X( t - document.getElementById("mark"+questionID).innerHTML = array[0];3 V5 A4 o; h" S# b# [9 @
- document.getElementById('totalMark').innerHTML = array[1];
7 z6 A; \+ O8 P9 i1 x: R4 t" c B - alert("修改成功!");; N" R) j! ]: }
- }- V; ~# c+ c0 K, R/ b5 H' C
- ! t% W, r0 Q9 X2 E; |% r; X; t$ Z
- }
% q- U6 @2 w3 j# V0 D) q' t# d: X - function totalMark(spiID)
; n" t8 t# C; G8 v - {
8 ^: z, c6 K% D& V5 G } - AjaxMethod.TotalMark(spiID,callback_totalMark);& }4 _6 s r$ U/ Y7 v( H7 W
- }
; I$ `* g# i" { - function editMark(btnID)+ H u; ~3 _3 `! F& @1 E& P
- {
- X2 E# N f. o$ j/ A; K - var txtID = "txt"+btnID.substring(3,btnID.length);1 y, E5 @# |# d, k% J7 S
- 1 R+ l# q5 p w$ w
- var studentPaperID = document.all.hiddenSpi.value;0 ~; K8 y( E3 }2 b6 j' Z
- questionID = btnID.substring(3,btnID.length);
. y& V- v1 W( p( h - " p, j/ N* K6 g3 u
- var mark = parseInt($(txtID).value);
" o4 ]2 Z& _& @2 w1 L2 s - AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
& t' |* J+ m3 T5 }9 J% y7 ^& j - }
9 j6 |# w+ D9 B- e$ \7 a - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
- @( v# F) R5 g9 Y7 w4 h
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
$ [3 x0 ?$ J8 z. j
复制代码 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"/>3 @$ @5 l5 F' c1 M
- 4 s( b4 l. M+ Y4 _' B! Y
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
& g0 y9 F- j, n# q
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
: g8 G, S& f( [1 n/ T2 t
, x# ~5 Z6 C: L
7 A7 u: B2 E b' D) {3 ?" k问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|