晨鸟科技
标题:
IIS7.5 AjaxMethod 未定义解决办法
[打印本页]
作者:
xueshuai
时间:
2010-9-13 17:54
标题:
IIS7.5 AjaxMethod 未定义解决办法
首先,交代下背景:
8 ?& w9 S3 g9 ^* V! M5 q/ n
最近调试作业智能批改系统,其中在作业批改页用到了一点 ajax 技术(教师修改主观类题目分数需局部刷新),今天测试发现程序上传到windows server 2008 r2 的服务器上出现“AjaxMethod 未定义”错误,如下图:
. A4 B1 b2 x( F( r# C# `3 G- d
[attach]127[/attach]
# ?* L. Q5 X! ^! g+ n* R
$ R. D! z1 `/ |2 g, z8 V1 N8 S6 h
网上未找出此问题解决方法,纠结半天,最后修改服务器配置,问题解决...
2 p* j, X6 @' s7 }! S$ S
) ~- c- D$ N h, O P0 q k
下面总结解决方法:
" m" B+ z- p, c! ~: K
先看页面js代码
<script language="javascript">
1 t# H) J' H# S( v
var questionID;
. ]% w4 w4 a; X6 W8 Z. |# A
function $(ID)
" g* Z( \( I8 \7 ?' V1 H/ j
{
# j# W( A3 ~: L. L+ u) A; a
if(document.all)
" k6 o3 I: D* j0 y+ z! y
return document.all[ID];
4 r; X' y3 A: N1 U0 v
else if(document.getElementById)
3 n8 r. x; I* A; m1 b
return document.getElementById(ID);
9 a9 X$ W4 \6 k4 K2 A
else
% w, H+ m; z; l2 g# T# R$ B
return null;
5 ~6 Z$ r5 {. l
}
$ U2 a7 B3 z$ Q
' g! R, V \# v0 R" o" b8 M1 V' e
function callback_test1(res)
/ k+ U8 [( @# h2 M* c0 o
{
2 p7 M, s/ q6 Y2 q* T
if(res.value =="-1")
; f, a* U) z; d4 y+ F9 E" k
{
6 ]8 B$ _ {6 L& d
alert("必须输入数字");
) q* x& t% e* O/ @& R) K0 X! o
}
* ?* B9 A, n7 l0 Z
else if(res.value == "-2")
7 C; p. P+ V& s z# [4 v
{
* q4 I- P, C8 l/ \$ d4 [
alert("得分不能超过题目标准得分");
, u3 S) Q) K$ ]
}
# F: R+ }- C" j9 g% p0 N
else{
0 p3 K& y$ c% t+ E8 |+ m4 M6 G% L& g
var array = res.value.split(",");
) k% Z( m- O. E9 V" x4 V9 f$ x
document.getElementById("mark"+questionID).innerHTML = array[0];
$ ~/ Z/ R( k- V; S x! R$ H9 F1 y- j
document.getElementById('totalMark').innerHTML = array[1];
! G% v0 h$ K/ Q/ l6 R6 r: m3 ?9 f$ m$ v
alert("修改成功!");
7 Q& |! T! ]6 U1 u+ K
}
$ P$ c4 ?# m+ n6 e$ Q) O
/ y: `2 i, P4 N, w" v' T5 y- k
}
$ g3 a, W% s: H3 W7 u+ `
function totalMark(spiID)
; }. K( F: T! J9 X; h v
{
4 \+ F- x8 A( ~# x6 ~0 `+ v
AjaxMethod.TotalMark(spiID,callback_totalMark);
5 P, a m& s- W! H- A2 S/ `! f
}
3 z' E# b8 _8 l7 D; E& m, }
function editMark(btnID)
4 x/ z$ _8 {- _5 a' Z
{
5 E8 s F9 r# y, @, n
var txtID = "txt"+btnID.substring(3,btnID.length);
8 P: ]. m6 x& N3 ~% B
- K8 ]8 Y! s. E" |' y
var studentPaperID = document.all.hiddenSpi.value;
+ @5 h9 {& Q7 A0 i3 |# P; d
questionID = btnID.substring(3,btnID.length);
% p( r4 w% [0 J! Y$ `8 e
2 {2 o+ g% W& J" ?/ F$ @4 N3 n6 k- m
var mark = parseInt($(txtID).value);
+ V- F. _' [( y* _, M
AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);
! E. Y' T9 t! y) @$ I
}
6 |2 W+ E K$ j8 k5 r
</script>
复制代码
1.页面.cs文件中的Page_Load须包含
Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
* o; J) k; x* G5 ?/ l
复制代码
2.AjaxMethod类中添加
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
: b3 `# P1 y+ u3 C8 i' H2 v
复制代码
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"/>
1 N+ c$ f3 |0 W
" }% [( U; |/ S
<add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" /> //IIS版本为7.0以上添加
* ^5 f: Y: E7 T2 i
复制代码
5.打开IIS,点击“应用程序池”——右键“高级设置”——启用32位应用程序“True”
( n& w+ T# m* M9 i
[attach]128[/attach]
2 ~! g, l9 S6 e2 b
5 Q7 z5 Z5 t- ~# S
问题解决
欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/)
Powered by Discuz! X3.2