晨鸟科技
标题:
IIS7.5 AjaxMethod 未定义解决办法
[打印本页]
作者:
xueshuai
时间:
2010-9-13 17:54
标题:
IIS7.5 AjaxMethod 未定义解决办法
首先,交代下背景:
. r) Y! s6 q# B# ^$ d0 z' v
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
' q( ^; L! O5 B
[attach]127[/attach]
0 M% l3 b1 a" ~
9 l* {3 \0 K* }9 I5 c& x( m
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
! F4 j3 v& R* F( H8 M, D
/ E! G3 P" t( v" L
下面总结解决方法:
6 p% e; w6 t& Y) e0 ?7 a
先看页面js代码
<script language="javascript">
0 U# n! v e) e
var questionID;
* S- p* u9 Z( f7 N$ U' k0 g" q
function $(ID)
6 V$ l! x% V' C/ u& M9 `
{
9 u- U _3 F+ r% G) O1 X! ?2 s7 O
if(document.all)
% e$ c$ L' `/ P, C/ O
return document.all[ID];
: w" a) s: N! b
else if(document.getElementById)
" U( M; R- u6 ]* k9 n) x5 M+ F' N
return document.getElementById(ID);
3 U V" p$ U7 ~3 n6 @' r, n
else
9 V# u6 R @$ d$ R, R
return null;
6 d# c. b) U& m3 o1 [, ]
}
# t: ?( g; Y" y* V7 W2 K) R. x
& K+ B3 h" B! z3 r- c
function callback_test1(res)
3 E9 r5 v |! Z$ @
{
& P3 E/ x1 S- ~) ~" y( C; _
if(res.value =="-1")
) h9 Q# {! K ~( g
{
& j6 t2 Q1 o) z; R
alert("必须输入数字");
; h+ {. z5 `& R3 J
}
6 F7 b3 |7 l9 Z7 Q0 q
else if(res.value == "-2")
4 t# x$ W8 ~+ X- ~( q
{
( r |! p) r# m$ `! N
alert("得分不能超过题目标准得分");
- A. C/ i& u9 P3 {6 C2 C
}
# V7 n; f& }6 M- Y2 I
else{
, A1 I9 g4 d- e; L1 A5 g* e3 ?
var array = res.value.split(",");
3 X1 b/ t9 U! z. k$ R5 I8 L% ^: d9 ^
document.getElementById("mark"+questionID).innerHTML = array[0];
, }' X3 a. B( @* E) `+ d* f
document.getElementById('totalMark').innerHTML = array[1];
6 K& B6 K9 ^) E4 l8 v; Q' T" T$ K
alert("修改成功!");
+ S4 o0 O. p5 Q- v+ J
}
' E: S$ p9 _3 V0 W# N% {- u6 }* d
, X# {0 D6 q' `3 }2 C" H8 k
}
' i% W0 r: `; ~& @
function totalMark(spiID)
5 ]$ z/ {% x y1 p2 L
{
8 p, H; _0 F3 |9 o' ?
AjaxMethod.TotalMark(spiID,callback_totalMark);
P! D3 a& f4 Q
}
2 ]; G3 T8 L2 j c) ^0 Y. X( _
function editMark(btnID)
' H7 d4 ?; x; c
{
! ~7 D2 p2 Y6 e y/ d
var txtID = "txt"+btnID.substring(3,btnID.length);
# ]' [" L) r8 B* {9 J. W
2 Q# b$ J T% B7 e2 P
var studentPaperID = document.all.hiddenSpi.value;
j, K% e+ a& d0 T5 a, Q
questionID = btnID.substring(3,btnID.length);
- @5 |/ \$ B: r8 ` I
0 [; k! W5 ~; A1 F/ }& |2 Q5 f1 q
var mark = parseInt($(txtID).value);
- u6 s$ v+ B3 I% h5 w$ D) [
AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
, k7 l L/ l# _9 t; M+ U1 {" ~
}
0 B! g8 G' r: N- H5 N/ _4 Q
</script>
复制代码
1.页面.cs文件中的Page_Load须包含
Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
/ E0 v' P, ?) d( R
复制代码
2.AjaxMethod类中添加
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
7 ?. w# y1 q% j: L q! A
复制代码
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 O, @, q7 U% x% v4 g% h
& ?, D, A5 v9 x* m# ^; }/ ] q
<add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
0 r6 k1 F( c/ p& j, E- ^
复制代码
5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
9 S* W3 `' K: {4 \- s1 I
[attach]128[/attach]
( v8 {5 \- w& H" A
3 O! x _6 p1 J" C, n% W
问题解决
欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/)
Powered by Discuz! X3.2