晨鸟科技
标题:
IIS7.5 AjaxMethod 未定义解决办法
[打印本页]
作者:
xueshuai
时间:
2010-9-13 17:54
标题:
IIS7.5 AjaxMethod 未定义解决办法
首先,交代下背景:
; O! E. D; n8 f. q; F" p* l6 a
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
8 t- @: C6 s _# f$ A. @
[attach]127[/attach]
7 B) @0 e' |+ ^( k3 b" r7 F
: X" j3 |# y" `
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
/ M5 |8 k% R& M0 ~
& C8 y$ P( p8 u' m9 K D$ c8 m' @
下面总结解决方法:
, A( Z/ h0 _6 y+ J3 I: f, c: p; b
先看页面js代码
<script language="javascript">
: f. |0 P& J6 k) S0 H
var questionID;
" e' f# F) }( g1 q
function $(ID)
+ W% [! H; h' v3 k
{
! f0 e- i, {: @9 N0 v
if(document.all)
5 z: V( B: X1 z
return document.all[ID];
7 Z* q+ @/ }' S% L
else if(document.getElementById)
2 ~8 U5 Q% x. K2 V- F& F
return document.getElementById(ID);
1 V# q, d: j% c G: e O# O2 D U) E
else
% z$ f& y# |( z# w" M. o! V, l
return null;
( e3 w. X. O9 R' @' p, d- A
}
" Y# r! A4 |0 L9 S, B6 w3 _
5 }4 p, o7 w7 j% K8 r
function callback_test1(res)
9 L$ R% W" k& C. {! M7 R
{
T: o. |& H- e5 q4 T2 d- j0 |
if(res.value =="-1")
+ P0 |6 e' r2 J/ ? c* d$ d
{
8 ~" k1 N* |- [) l/ E& `
alert("必须输入数字");
4 [) L; c( k' t/ o7 T
}
3 {; @ {9 Z% ~
else if(res.value == "-2")
( J, z! I+ M9 |9 F _0 t
{
9 e+ w, A! K5 d# `9 ]6 y. ~
alert("得分不能超过题目标准得分");
& @/ K/ L8 w: J; {
}
4 |; k/ s( }" b2 K t1 b; G
else{
* X8 c/ _; s3 H. Q' w7 w* V
var array = res.value.split(",");
% m$ v: i5 H9 b# L/ ~& Y8 N
document.getElementById("mark"+questionID).innerHTML = array[0];
/ D& ^! m! |& v4 ^" ^) r1 Z
document.getElementById('totalMark').innerHTML = array[1];
$ w2 d q( m, B! ]1 `
alert("修改成功!");
5 v: z% z/ W5 H+ m$ J/ f( Y3 m5 Z8 ?
}
. H: F8 i* C+ X) n
0 Y$ t6 t4 I4 M- L4 P0 `
}
* Q) A+ ~& x8 _! [1 {
function totalMark(spiID)
7 j- w, K: V) s% o& o7 d" h
{
& G2 R5 l3 T9 q ^, G% c2 q
AjaxMethod.TotalMark(spiID,callback_totalMark);
0 \$ v5 z: J) U7 V! Q
}
1 g5 v2 o0 u3 {6 A
function editMark(btnID)
+ |, K9 x$ q% u) g& d2 V
{
1 U4 z) n0 A7 D5 c' T P2 h
var txtID = "txt"+btnID.substring(3,btnID.length);
2 p) W! z6 y- I$ y4 o' M
6 ^- q; X3 q+ J7 t: ^' S7 Y/ ?
var studentPaperID = document.all.hiddenSpi.value;
6 I( o/ v) R0 d% k0 O& O
questionID = btnID.substring(3,btnID.length);
7 T, {# r& H3 ^, F1 F) x% B2 U
- n6 V2 F3 r4 y
var mark = parseInt($(txtID).value);
/ N- z3 D7 D5 Q8 ^
AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
* F1 h! z4 q5 c* s4 |( N( z/ X
}
) O- d4 Q. @8 x) g. Q6 U
</script>
复制代码
1.页面.cs文件中的Page_Load须包含
Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
. T- h1 y' d% t T- ~0 ]; x
复制代码
2.AjaxMethod类中添加
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
1 m8 p+ U6 h z l- w: ^0 K
复制代码
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"/>
7 A1 t6 J- g6 X2 ^
1 h5 L- ?9 z1 L" k' C
<add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
% p" W# a* J9 [3 s% X3 g3 o
复制代码
5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
C Z6 I! W& a0 d2 ~- d$ g
[attach]128[/attach]
, M0 t6 O4 h, A% U9 s
; Z* X1 f/ u, N9 L# x; A
问题解决
欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/)
Powered by Discuz! X3.2