|
|
首先,交代下背景:$ X5 a8 Y: d* ^: q1 N* O
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
' T( u8 F& T& C/ D4 z/ S) @6 v% D) P l5 ~- a8 X8 T
; j& c2 K( C3 N8 G- q" F网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
% `: ^3 v: y9 ]. P4 k) g* X4 `: _) b% m' S A
下面总结解决方法:" I7 w2 N3 {9 p- a7 p. K( b
先看页面js代码- <script language="javascript">
4 D' P6 r7 C3 J3 y- s - var questionID;
* c$ ^/ E( z- N2 e$ a% x( _ - function $(ID): [' Q- A: |3 x9 M9 E
- {
) A1 R& S4 q& O4 A7 z - if(document.all)
6 J4 e2 ~# `" b4 o6 B - return document.all[ID];
6 V: w6 d+ U% w) g - else if(document.getElementById)
4 ^: i+ X" P" K - return document.getElementById(ID);
! i9 y/ v8 | U: Q, J. G# `- C4 K3 m - else
/ A9 G W# l7 Y - return null;6 |: A+ ? o) C: }* |$ T
- }, v7 }# y$ r- K9 n
- e* f7 T3 l. |+ Q; q
- function callback_test1(res)
9 D. q; l c6 ?# s$ m" \* d - {
" |2 }$ d# T) ~: o8 s" D - if(res.value =="-1")7 q! ], X/ t# T
- {: N$ o3 g0 n1 y/ |8 D# M4 X
- alert("必须输入数字");
/ Y1 Y( x, r. s9 T5 h( q4 q' h - }' K- B8 Z% s$ m) W1 m5 V9 Y3 `
- else if(res.value == "-2")# D) K9 ]1 N) Q8 B
- {& j. C, [0 z# m9 K" r3 G
- alert("得分不能超过题目标准得分");! H% o6 t( \$ r5 E2 I
- }
$ d1 Z- m6 K3 E* b( ?4 c$ ^4 M - else{8 R7 S$ m) e T) [0 h- v
- var array = res.value.split(",");
) }! o6 k3 v! m7 C3 l7 @! I - document.getElementById("mark"+questionID).innerHTML = array[0];3 H5 a1 L+ E; R/ |
- document.getElementById('totalMark').innerHTML = array[1];
* X9 X" l7 |" o - alert("修改成功!");
8 {) ?9 o# M E6 c5 Y& b, _# x+ R - }
' e, {, q: X# a7 b- ^+ E -
`5 I' j$ n% V7 V7 d - }
# V4 o9 r% X6 O2 J+ d H. F# ^ - function totalMark(spiID)! \/ }1 W7 h& q5 n" q/ G7 Y! h, F% C
- {
5 j1 p/ I9 o x8 ]7 p& ?! t - AjaxMethod.TotalMark(spiID,callback_totalMark);
, A8 K$ {3 `1 U( H - }% M/ E* f- k8 d( S2 i4 f
- function editMark(btnID)
! R! k2 _4 [* E7 ^0 n) j0 f3 f- c" B - {$ z& \$ n2 q T
- var txtID = "txt"+btnID.substring(3,btnID.length);# a" K/ y2 N E9 F0 M
- 6 T( D/ K1 q6 F% R* C
- var studentPaperID = document.all.hiddenSpi.value;
( C8 _# M! S0 W. Z% ] - questionID = btnID.substring(3,btnID.length);
. j) W9 g5 _" v7 p5 ^$ P - 0 K8 i" H0 o; u8 H. I
- var mark = parseInt($(txtID).value);9 p5 q2 _- u' J1 l! f' n. w
- AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
- u- M3 ^7 K9 ?5 D( C" r+ F - }) f1 c r9 B7 w9 j
- </script>
复制代码 1.页面.cs文件中的Page_Load须包含- Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));! I, ^( a# \& H9 s- n' R1 u" [; B/ V
复制代码 2.AjaxMethod类中添加- [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
7 I! Q, V9 V0 y O" l& F% c
复制代码 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"/>
. d" G8 x; ~7 I2 q1 E; Z( V - ! }+ J O2 \0 k* [; h, q* m
- <add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加. V; k8 ^5 c# O: Z2 g3 s
复制代码 5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”2 I2 K7 L7 c1 z
& ]- g3 @5 m+ H% S4 r. G8 E
5 M! B1 u- t! I) n
问题解决 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|