|
|
首先,交代下背景:
5 L! g, C, [' A# k# D4 |最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
, |* b6 j+ C) b q, O, \' J4 B$ B' W5 F$ _* s1 \- j: l# s
6 M' _6 _# }0 _" T# Z
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
1 R# }5 z. e! j$ @) R2 i3 ^* @& x [6 j. a, C4 J
下面总结解决方法:! ~8 q/ q. z6 W- l5 V( J' j
先看页面js代码- <script language="javascript">$ T1 Q% a& _. K6 e; ]8 Z" G
- var questionID;
f) H s2 M4 w3 e7 m) E - function $(ID)
S# V! S5 X# l z+ V - {
7 C* q) U4 H) W7 U0 m& s8 x* b8 n+ f3 U - if(document.all)" r9 @7 E3 P A" f
- return document.all[ID];: G1 |4 x! b+ ]/ L, q; R" w
- else if(document.getElementById); q3 ?) t, p4 A' H; o5 H
- return document.getElementById(ID);
, u6 _4 K! S# _5 \! \ - else4 n* \/ [7 }3 R) T9 x' n
- return null;8 B0 U0 E; T6 A: m+ ^
- }. j: {/ U n0 h( K
9 [# C# }+ m% N. E4 W# h: L- function callback_test1(res)
$ `, }$ c' [7 o" U) Z - {
1 L1 v$ H$ I) |/ x) q' Y - if(res.value =="-1"), d. h c1 k% }5 X
- {
0 g* p2 K+ h- X3 [' F, y' l" n - alert("必须输入数字");! `& q$ C) m( u! L2 ^! A% g- N
- }4 K& I! F0 g1 {/ W1 B& |
- else if(res.value == "-2"), E7 B( N# q8 h% ~4 g& s
- {
0 k( P. o8 T' d/ B/ I4 ^. l - alert("得分不能超过题目标准得分");5 t; Y' M" c* B/ t
- }
) p! v( e+ r; B- K; M4 J' t+ o3 b7 a - else{
9 {5 X1 e' ~# }, C# S% ~2 f5 k: A; q - var array = res.value.split(",");" ]# ~% }; c4 L4 H" A" z2 N* E
- document.getElementById("mark"+questionID).innerHTML = array[0];
# u. B, `2 U, p- k. f - document.getElementById('totalMark').innerHTML = array[1];0 S7 X6 {6 S) b! g
- alert("修改成功!");; b) F/ S# A( ~, o
- }# N8 I& l8 R# O/ G K2 s+ f2 B0 f; S
-
9 B$ u2 T& @' l& z* G: V - }- h; A8 m, M1 x8 C* }9 c4 e4 ^
- function totalMark(spiID)/ D! |$ ?" F+ n1 S& }
- {
) y2 L( K3 t% j4 Q/ g0 l1 |/ b% \" e4 D - AjaxMethod.TotalMark(spiID,callback_totalMark);& e6 {2 b5 K, |
- }
+ W$ V1 i$ a/ o& O8 W - function editMark(btnID)
$ m- H6 }7 d( I: w - {
9 V+ y; h/ v6 Z - var txtID = "txt"+btnID.substring(3,btnID.length);1 ^5 _) Y9 ~8 u/ V) A! T9 y
- + O3 u& `+ C9 i; c( b
- var studentPaperID = document.all.hiddenSpi.value;" M/ N' a. S& K! o; H+ C1 r& X
- questionID = btnID.substring(3,btnID.length);/ y* `$ G# a, [8 m1 I9 _0 y
-
5 n* ]: o9 R# z7 \1 g% u8 u - var mark = parseInt($(txtID).value);) F' H. T U7 Z/ \0 L- n
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
2 M9 f! t, S" E( C- E" z - }# u9 ~1 o6 q) V+ L, d' i- Q
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
; j3 i- T+ Y; A+ A p {, `1 C% B
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
3 g0 c2 q/ F3 F( Y
复制代码 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"/>2 G. r" C# A7 a: E1 B
- ; \ @- ^ g- y& W5 d5 C
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加" V' a9 \# Z/ r* @: s; U
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
% \# K0 x5 t0 B
4 O. }* C' K, t7 m( P, f
- O* ^6 E! Z! w) X+ E+ u问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|