晨鸟科技

标题: 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代码
  1. <script language="javascript">
    1 t# H) J' H# S( v
  2.     var questionID;. ]% w4 w4 a; X6 W8 Z. |# A
  3.     function $(ID)
    " g* Z( \( I8 \7 ?' V1 H/ j
  4.         {# j# W( A3 ~: L. L+ u) A; a
  5.             if(document.all)
    " k6 o3 I: D* j0 y+ z! y
  6.                 return document.all[ID];
    4 r; X' y3 A: N1 U0 v
  7.             else if(document.getElementById)
    3 n8 r. x; I* A; m1 b
  8.                 return document.getElementById(ID);
    9 a9 X$ W4 \6 k4 K2 A
  9.             else
    % w, H+ m; z; l2 g# T# R$ B
  10.                 return null;
    5 ~6 Z$ r5 {. l
  11.         }
    $ U2 a7 B3 z$ Q

  12. ' g! R, V  \# v0 R" o" b8 M1 V' e
  13.     function callback_test1(res)
    / k+ U8 [( @# h2 M* c0 o
  14.     {
    2 p7 M, s/ q6 Y2 q* T
  15.         if(res.value =="-1"); f, a* U) z; d4 y+ F9 E" k
  16.         {6 ]8 B$ _  {6 L& d
  17.             alert("必须输入数字");
    ) q* x& t% e* O/ @& R) K0 X! o
  18.         }* ?* B9 A, n7 l0 Z
  19.         else if(res.value == "-2")7 C; p. P+ V& s  z# [4 v
  20.         {
    * q4 I- P, C8 l/ \$ d4 [
  21.             alert("得分不能超过题目标准得分");
    , u3 S) Q) K$ ]
  22.         }
    # F: R+ }- C" j9 g% p0 N
  23.         else{
    0 p3 K& y$ c% t+ E8 |+ m4 M6 G% L& g
  24.             var array  = res.value.split(",");
    ) k% Z( m- O. E9 V" x4 V9 f$ x
  25.             document.getElementById("mark"+questionID).innerHTML = array[0];$ ~/ Z/ R( k- V; S  x! R$ H9 F1 y- j
  26.             document.getElementById('totalMark').innerHTML = array[1];
    ! G% v0 h$ K/ Q/ l6 R6 r: m3 ?9 f$ m$ v
  27.             alert("修改成功!");
    7 Q& |! T! ]6 U1 u+ K
  28.         }
    $ P$ c4 ?# m+ n6 e$ Q) O
  29.            
    / y: `2 i, P4 N, w" v' T5 y- k
  30.     }$ g3 a, W% s: H3 W7 u+ `
  31.     function totalMark(spiID)
    ; }. K( F: T! J9 X; h  v
  32.     {4 \+ F- x8 A( ~# x6 ~0 `+ v
  33.         AjaxMethod.TotalMark(spiID,callback_totalMark);5 P, a  m& s- W! H- A2 S/ `! f
  34.     }3 z' E# b8 _8 l7 D; E& m, }
  35.     function editMark(btnID)4 x/ z$ _8 {- _5 a' Z
  36.     {
    5 E8 s  F9 r# y, @, n
  37.         var txtID = "txt"+btnID.substring(3,btnID.length);8 P: ]. m6 x& N3 ~% B

  38. - K8 ]8 Y! s. E" |' y
  39.         var studentPaperID = document.all.hiddenSpi.value;+ @5 h9 {& Q7 A0 i3 |# P; d
  40.         questionID = btnID.substring(3,btnID.length);% p( r4 w% [0 J! Y$ `8 e
  41.             2 {2 o+ g% W& J" ?/ F$ @4 N3 n6 k- m
  42.         var mark = parseInt($(txtID).value);+ V- F. _' [( y* _, M
  43.        AjaxMethod.EditDiscussMark(studentPaperID,questionID,mark,callback_test1);        ! E. Y' T9 t! y) @$ I
  44.     }
    6 |2 W+ E  K$ j8 k5 r
  45. </script>
复制代码
1.页面.cs文件中的Page_Load须包含
  1.                         Ajax.Utility.RegisterTypeForAjax(typeof(Ajax.AjaxMethod));* o; J) k; x* G5 ?/ l
复制代码
2.AjaxMethod类中添加
  1.         [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
    : b3 `# P1 y+ u3 C8 i' H2 v
复制代码
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"/>
    1 N+ c$ f3 |0 W
  2. " }% [( U; |/ S
  3.       <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