|
首先,交代下背景:- ?: n. u# D- j; i7 F( C- M
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
( o& _* O& N0 N: c* \' N# T, B1 a
; N1 h. c0 b' g+ t2 E! r- \8 u& P0 H
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...8 a2 `7 L! p% x8 }+ S
0 V3 m: C7 T# r# d
下面总结解决方法:& U' z9 O4 u, s6 b* E6 y
先看页面js代码- <script language="javascript">/ W: W u5 J9 P! @6 p# Z
- var questionID;
, `! s% W+ U8 m' Y4 ]( m1 X: w - function $(ID)
+ M1 w0 | I. s - {8 R2 p6 p: w0 X+ z
- if(document.all)3 G( a5 \" p1 ^* u5 S% E
- return document.all[ID];+ Z4 ?9 _, w/ T& M
- else if(document.getElementById), f3 r( m) [' R. D5 X. l
- return document.getElementById(ID);
5 B. l' l5 e7 @6 o: l3 r' F - else
% Q; p. ^& {6 ^; U7 ^ - return null;1 Y( f W0 j+ I0 c7 L& b
- }
* Y2 k5 E4 c% p2 Y - 9 F2 Y* g1 G2 A+ X/ r
- function callback_test1(res)
" j" V6 ^) \+ N% i0 Y0 n& u - {& N/ M |/ ~' e e
- if(res.value =="-1")) S5 @1 u$ ~8 E( f/ _
- {. q1 E$ [* M4 u/ G' n5 {
- alert("必须输入数字");
3 }2 E! r: ~; U9 X2 M) Z7 ^; V - }
9 L8 ?. E* ?$ G0 \4 _6 G5 s/ t - else if(res.value == "-2")
! F/ I, G7 J- |" ~4 ?1 Y6 P# z - {+ b9 [. _, p9 s5 S0 b6 ]
- alert("得分不能超过题目标准得分");% L5 k' J* \% m+ M" c& H
- } g3 B1 a$ s; U" u
- else{
. N& u( U) X& w7 m - var array = res.value.split(",");
" o) m% R9 Y, ` - document.getElementById("mark"+questionID).innerHTML = array[0];
\& H6 E) `# x8 F5 n! H; @* V - document.getElementById('totalMark').innerHTML = array[1];, J2 q5 n( X7 K6 @, |5 c& @1 @
- alert("修改成功!");- g. ?( |( l1 J; R: L
- }
2 U9 b! U. P5 Q, f' S& p, {! ^ -
1 b8 U) X* r* @! b9 p X. w - }
9 }" [2 G1 T% t7 B* w8 C/ @* l- w - function totalMark(spiID)# q+ X+ O5 v+ Q7 B/ g& d+ j
- {) _9 X" U# U) s* Y2 z# M
- AjaxMethod.TotalMark(spiID,callback_totalMark);# ]/ p1 Y. U- l8 e6 O+ q' l
- }+ J( e. e: F. Y! x& l
- function editMark(btnID)- R7 j# V* E7 ~# r
- {. C3 I9 b, Q+ p2 ]- q/ N3 x9 W
- var txtID = "txt"+btnID.substring(3,btnID.length);# p' K* ~4 g5 S* @
- : L, _% ~) J% W8 P( p7 Q2 Y
- var studentPaperID = document.all.hiddenSpi.value;; r- x$ ^8 l: x( g- D" k3 V
- questionID = btnID.substring(3,btnID.length);6 n: p# q1 q4 V! F: Q2 U, l
-
. o- y! E5 {4 q* }3 S( S+ i - var mark = parseInt($(txtID).value);( Q+ C8 ^( w- I
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); ! h% Y& Y- J- Q8 v4 N
- }
) O0 e# M" E! g2 j, x* ]! _ - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));4 `" x$ `8 q8 ?5 B) G. |
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]: m1 R& T1 d# ~" F0 }" v
复制代码 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"/>
: o& _7 b& `4 J& x/ x) n/ X
9 ^3 e+ T' I( c" A1 P! F- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加$ f' @% B3 g; u3 K) r
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”1 q9 E: D: A8 L2 l
4 q0 M: a2 V& {. ~7 I2 Z% X* r$ N/ ?+ c7 I* t5 M; |
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|