|
|
首先,交代下背景:
3 H" A# O, S3 J$ r$ q最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
" i3 {6 S, i, E* |! e, w) t
9 Z! d7 ~4 Y# A Q
! N- H$ K% x3 Q* l1 ~) ]5 s. o+ Q网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...( L% Y+ C) s9 U/ T! e- }- A
# O/ h# H% M0 j S
下面总结解决方法:+ K1 ^ N, g$ Z9 v$ {: N8 G
先看页面js代码- <script language="javascript">1 B7 ?" l2 m9 O* e% O1 L
- var questionID;
5 \# ^# M8 ^1 q! y% {9 w - function $(ID)+ g c3 \( y& ~9 u
- {% m/ s; t, L: f, D+ r5 a
- if(document.all)% U$ A1 w0 }! M/ _3 g3 Y
- return document.all[ID];3 x7 N7 `; }) e4 Z- c. G
- else if(document.getElementById)
; C8 N$ q6 S& B+ X- E - return document.getElementById(ID);! F' c5 T H& V6 B
- else
& T" r, k( R$ N; {# E& T - return null;. w) w9 D# {) N) @9 w
- }
& W# k, L' [7 y0 |- Q
& i( Z0 [; j- ?6 k/ W- function callback_test1(res)5 R, C! B1 p" {- ^! W
- {9 M8 T" U* F( q* s4 D- F; e
- if(res.value =="-1"), X3 ]+ c8 K( p. H, W: x
- {
. X, y* Z$ T/ K( q& z/ ] - alert("必须输入数字");. w8 g S2 ]+ ]& i
- }* Z+ S) a5 w* O6 X
- else if(res.value == "-2")
3 x9 A& B- l8 |1 |4 u: t& | - {
7 c, }& c; `1 u* m, C% a# ~ - alert("得分不能超过题目标准得分");
4 Y- P$ E6 e$ z8 L - }' ~8 X. S9 A3 e1 b9 P" ?
- else{! V: {5 w* c- o7 x/ }
- var array = res.value.split(",");
' a [* x; }/ g( }* m) u5 U - document.getElementById("mark"+questionID).innerHTML = array[0];
5 K% z8 E7 k0 h) B. M - document.getElementById('totalMark').innerHTML = array[1];2 r- `# v" Z% D/ e, ~" S3 T
- alert("修改成功!");, m% c6 [1 O! i2 N
- }# m6 M. W# F6 [) q+ _# J
- $ \% t1 H7 ~9 O, C: e+ t
- }
. z& L7 b3 C! ^5 Y. m - function totalMark(spiID)" Y, p$ g: A3 c3 k, z
- {
" V3 |, z, A4 I7 ?4 _# q - AjaxMethod.TotalMark(spiID,callback_totalMark);. w) j6 w# F: n3 R/ N |. F5 }! t
- }
9 q5 X1 `$ B$ s0 u7 C0 W! Y - function editMark(btnID)7 v5 B! E/ c2 |! c, G
- {: t- T6 Q7 Y5 [: \9 t$ J
- var txtID = "txt"+btnID.substring(3,btnID.length);
* x5 F7 k/ N, f
! |" m) o6 i$ H1 J. [- var studentPaperID = document.all.hiddenSpi.value;
" U5 @+ N7 v# D$ u - questionID = btnID.substring(3,btnID.length);8 {2 x3 C, l2 _: x( M8 R
-
- n- O* y P# \, h `# P - var mark = parseInt($(txtID).value);, b i0 v8 c8 j; m) J+ V- z; E
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1); " K) c- X. S+ o* O/ u' P% P
- }
2 Q- D/ ]* m) F$ x3 R& J1 _ - </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));+ z, i( P9 r4 c4 a& ?! h
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]6 \+ x9 |5 W# d+ O( s
复制代码 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"/>, ^. X4 e4 H8 M% U/ V; V7 D1 [
- 3 ]$ X+ ?" M4 ~. Y% W
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加/ }# ~5 C6 P( m: n8 m- t+ A r* n
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
B8 ^' v! d3 o) O H2 M2 g
. [3 \$ h/ b; D) r" b1 Q0 |3 i) |6 X2 ]/ p, y
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|