第一个问题是关于AjaxPro.Net 的,一直都没有解决,可能今年都不可能解决了.
问题如下:
我的开发环境是vs.net2005,AjaxPro版本是最新的5.11.4.2版本,经常出现的问题是
错误: syntax error
源文件:http://localhost/wddhy/ajaxpro/core.ashx
行:3
源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
再就是引用的某个名字空间没有定义:wddhy is not define
但是我明明在后台RegisterTypeForAjax(this.GetType());
一直未能够找到原因,写信给Ajax.net的作者,他回信是这样说的:他现在的开发环境是2003,所以当我们用2005版本的时候可能会出现问题,因为AjaxPro.2.dll的核心代码有错误,他要到下个月才升级他的版本到2005,所以要等很长的一段时间作者才能够解决这个问题,他建议我使用atlas,因为是MS的,所以兼容应该好点.呵呵
我只好使用atlas,但是也出现了一个问题,是一个简单的问题,就是用js去调用asmx方法的时候同样的提示名字空间is not define!!!真的郁闷,后来到MS的atlas论坛法帖求教,两个星期没人理,可能大家都没有碰到过这样的情况吧!因为我用的是master,后来乱打乱碰倒搞好了,我在master页面里的head里这样:
<head runat="server">
  <asp:contentplaceholder runat="server" ID="ScriptIncludes">
  <atlas:script ID="Script1" runat="server" Path="~/ScriptLibrary/AtlasCompat.js"
    Browser="Mozilla" />
  <atlas:script ID="Script2" runat="server" Path="~/ScriptLibrary/AtlasCompat.js"
    Browser="Firefox" />
  <atlas:script ID="Script3" runat="server" Path="~/ScriptLibrary/AtlasCompat.js"
    Browser="AppleMAC-Safari" />
  <atlas:script ID="Script4" runat="server" Path="~/ScriptLibrary/AtlasCore.js" />
  <atlas:script ID="Script5" runat="server" Path="~/ScriptLibrary/AtlasCompat2.js"
    Browser="AppleMAC-Safari" />
  <atlas:Script ID="Script6" runat="server" Path="~/ScriptLibrary/AtlasRuntime.js"/>
  <atlas:Script ID="Script7" runat="server" Path="~/ScriptLibrary/Atlas.js" />
</asp:contentplaceholder>
<link href="style.css" type="text/css" rel="Stylesheet" />
<asp:contentplaceholder runat="server" ID="Head" />
</head>
当你添加内容页的时候他也会添加个
<asp:Content ID="Content1" ContentPlaceHolderID="ScriptIncludes" Runat="Server">
</asp:Content>
这个时候你必须把这个content全部去掉,否则你的atlas将无法工作,这个小问题害死我了
第三个小问题就是是不是可以用atlas能够和ajax.net一样直接调用服务器方法得到返回值呢?
比如ajax可以这样:
var a = myNameSpace.myClass.myMethod(参数).value;
但是在atlas里面必须
myNameSpace.myClass.myMethod(参数,onComplete);
再function onComplete(ret)
{}
把返回的值包含在onComplete的ret参数里,这样做很不方便
如果我写alert(myNameSpace.myClass.myMethod(参数));得到的是个[object Object]
写alert(myNameSpace.myClass.myMethod(参数).value);得到的是undefine!
晕死,在Ms的atlas论坛发帖还是没有解决,不知道怎么搞了,如果只能够这样的话那太不方便啊