晨鸟科技

标题: 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代码
  1. <script language="javascript">0 U# n! v  e) e
  2.     var questionID;
    * S- p* u9 Z( f7 N$ U' k0 g" q
  3.     function $(ID)
    6 V$ l! x% V' C/ u& M9 `
  4.         {9 u- U  _3 F+ r% G) O1 X! ?2 s7 O
  5.             if(document.all)
    % e$ c$ L' `/ P, C/ O
  6.                 return document.all[ID];: w" a) s: N! b
  7.             else if(document.getElementById)" U( M; R- u6 ]* k9 n) x5 M+ F' N
  8.                 return document.getElementById(ID);3 U  V" p$ U7 ~3 n6 @' r, n
  9.             else
    9 V# u6 R  @$ d$ R, R
  10.                 return null;
    6 d# c. b) U& m3 o1 [, ]
  11.         }# t: ?( g; Y" y* V7 W2 K) R. x
  12. & K+ B3 h" B! z3 r- c
  13.     function callback_test1(res)3 E9 r5 v  |! Z$ @
  14.     {& P3 E/ x1 S- ~) ~" y( C; _
  15.         if(res.value =="-1")
    ) h9 Q# {! K  ~( g
  16.         {& j6 t2 Q1 o) z; R
  17.             alert("必须输入数字");; h+ {. z5 `& R3 J
  18.         }6 F7 b3 |7 l9 Z7 Q0 q
  19.         else if(res.value == "-2")4 t# x$ W8 ~+ X- ~( q
  20.         {( r  |! p) r# m$ `! N
  21.             alert("得分不能超过题目标准得分");- A. C/ i& u9 P3 {6 C2 C
  22.         }# V7 n; f& }6 M- Y2 I
  23.         else{, A1 I9 g4 d- e; L1 A5 g* e3 ?
  24.             var array  = res.value.split(",");
    3 X1 b/ t9 U! z. k$ R5 I8 L% ^: d9 ^
  25.             document.getElementById("mark"+questionID).innerHTML = array[0];, }' X3 a. B( @* E) `+ d* f
  26.             document.getElementById('totalMark').innerHTML = array[1];
    6 K& B6 K9 ^) E4 l8 v; Q' T" T$ K
  27.             alert("修改成功!");+ S4 o0 O. p5 Q- v+ J
  28.         }
    ' E: S$ p9 _3 V0 W# N% {- u6 }* d
  29.             , X# {0 D6 q' `3 }2 C" H8 k
  30.     }
    ' i% W0 r: `; ~& @
  31.     function totalMark(spiID)5 ]$ z/ {% x  y1 p2 L
  32.     {8 p, H; _0 F3 |9 o' ?
  33.         AjaxMethod.TotalMark(spiID,callback_totalMark);
      P! D3 a& f4 Q
  34.     }
    2 ]; G3 T8 L2 j  c) ^0 Y. X( _
  35.     function editMark(btnID)
    ' H7 d4 ?; x; c
  36.     {! ~7 D2 p2 Y6 e  y/ d
  37.         var txtID = "txt"+btnID.substring(3,btnID.length);# ]' [" L) r8 B* {9 J. W

  38. 2 Q# b$ J  T% B7 e2 P
  39.         var studentPaperID = document.all.hiddenSpi.value;  j, K% e+ a& d0 T5 a, Q
  40.         questionID = btnID.substring(3,btnID.length);- @5 |/ \$ B: r8 `  I
  41.             0 [; k! W5 ~; A1 F/ }& |2 Q5 f1 q
  42.         var mark = parseInt($(txtID).value);- u6 s$ v+ B3 I% h5 w$ D) [
  43.        AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);       
    , k7 l  L/ l# _9 t; M+ U1 {" ~
  44.     }0 B! g8 G' r: N- H5 N/ _4 Q
  45. </script>
复制代码
1.页面.cs文件中的Page_Load须包含
  1.                         Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));
    / E0 v' P, ?) d( R
复制代码
2.AjaxMethod类中添加
  1.         [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
    7 ?. w# y1 q% j: L  q! A
复制代码
3.Global.asax的Application_Start方法添加
  1. Ajax.Utility.HandlerPath = "csharpwrapper";
复制代码
4.web.config中的<httpHandlers>和<handlers>分别添加
  1.                         <add verb="POST,GET" path="csharpwrapper/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
    2 O, @, q7 U% x% v4 g% h

  2. & ?, D, A5 v9 x* m# ^; }/ ]  q
  3.       <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