剖析MagicAjax

来源:互联网 发布:淘宝即将开售的怎么抢 编辑:程序博客网 时间:2024/05/17 23:22

剖析MagicAjax

Posted on 2005-12-08 20:23 绿叶 阅读(5268) 评论(59)  编辑 收藏 引用 网摘

刚刚得知MagicAjax(http://www.magicajax.net/),他让你体验什么叫Easy AJAX,并支持.Net2.0。你无需对现有的webform方式开发有任何的改变,你只需配配web.config,拉拉控件就行了。本文不说用法,因为他实在太简单了,我在这里对他做一个分析,让大家了解他的工作方式。

从例子入手吧,一个button,一个label,点击button更新lable到当前时间。

设计器上的html:
<div style="width: 300px">
    
<ajax:AjaxPanel ID="AjaxPanel1" runat="server">
        
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></ajax:AjaxPanel>
</div>

输出后的html:
<div>
<input type="hidden" name="__CONTROL_FINGERPRINTS_AjaxPanel1" id="__CONTROL_FINGERPRINTS_AjaxPanel1" value="" />
<input type="hidden" name="AjaxPanel1$RBS_Store" id="AjaxPanel1$RBS_Store" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNTg1NTY3MzczD2QWAgIDD2QWAgIBDw9kFgIeCEFqYXhDYWxsBQVhc3luY2RkWqu19ZXiwLYiiNPPAP+GKoHYdzs=" />
</div>

<div style="width: 300px">
    
<span id='AjaxPanel1$RBS_Holder'><span id="Span1" AjaxCall="async">
        
<span id="Button1$ajaxdest" name="__ajaxmark"><input type="submit" name="Button1" value="Button" id="Submit1" /></span>
        
<span id="Label1$ajaxdest" name="__ajaxmark"><span id="Span2">Label</span></span></span></span>
</div>

<script type="text/javascript">
<!--
var RBS_Controls =  new Array(document.getElementById("AjaxPanel1$RBS_Holder"));
var RBS_Controls_Store =  new Array(document.forms[0]["AjaxPanel1$RBS_Store"]);
// -->
</script>


MagicAjaxModule是一个IHttpModule拦截请求。主要处理在:
void Application_AcquireRequestState(object sender, EventArgs e)
·如果是普通Page,直接输出页面。
·如果请求是“Get”,直接输出页面。
·如果是ajax请求的话,由_request.Form["__AJAXCALL"]判断是否一个ajax请求,如果是则调用HttpContext.Current.Handler.ProcessRequest(HttpContext.Current)并更新相关状态,包括ViewState,最后Flush()页面。在这个过程当中,输出都是交给AjaxCallHelper完成,而这个help最后产生一个script,那么在客户端在接收到这个script,就直接执行:eval(responseText).比如例子中点击button后,最后产生的script是:
AJAXCbo.ExtendedSetHtmlOfElementScript("<span id=/"Label1/">2005-12-8 18:03:22</span>","Label1$ajaxdest");

AJAXCbo.SetFieldScript(
"__CONTROL_FINGERPRINTS_AjaxPanel1","C04A0FC;Button1#7DA27781;Label1#F84162CA");

AJAXCbo.SetFieldScript(
"__VIEWSTATE","/wEPDwUKMTkwNzc1NDY4MQ9kFgICAw9kFgICAQ8PZBYCHghBamF4Q2FsbAUFYXN5bmMWAgIDDw8WAh4EVGV4dAUSMjAwNS0xMi04IDE4OjAzOjIyZGRk+HNmUx11Ztw2Z2CodiIhPxrEm4A=");

'AJAX_LOADING_OK';
由此可以看出,点击button后,返回给客户端,客户端负责解释和执行这个script。
第一行:更新label里面的时间
第二行:更新panel的隐含字段
第三行:更新ViewState
第四行:一个标志,表示请求成功

客户端的js工作流程
1)首先,他把页面所有的ajaxPanel放在一个array里面:RBS_Controls,而每个panel都对应到另外一个array:RBS_Controls_Store 里面的各个panel的状态。
2)这时候大家注意到页面上这句js:
<script language='javascript'>
    
if (typeof(AJAXCbo) == 'undefined')
        alert(
"Unable to find script library '/AjaxCallObject.js'. Copy the file to the required location, or change the 'scriptPath' setting at magicAjax section of web.config.");
    
else
        AJAXCbo.HookAjaxCall(
false,false,false);
</script>
AjaxCallObject.prototype.HookAjaxCall = function(bPageIsStored, bUnloadStoredPage, bTracing)会hook几个事件:
window.onload,  window.onbeforeunload,  window.onunload,  document.forms[0].onsubmit(这是是重点)
3)点击panel里面的button发出一个submit,由于document.forms[0].onsubmit被hook了,他在这里引发:AJAXCbo.DoAjaxCall(target.name, "", cbType)并return false,就不会引发页面刷新。
4)在DoAjaxCall里面,一个for循环把form里面的内容序列化成字符串放在变量theData里面
5)调用XmlHttp工作:open->onreadystatechange(设置异步完成引发事件)->setRequestHeader->send
不管异步调用还是同步调用,最后都会引发:OnComplete事件,OnComplete就会调用eval(responseText)来执行服务段返回的script了。

AjaxPanel控件
控件主要render HTML,配合客户端的js工作。
·构造函数初始化控件的panel里面的XmlHttp请求方式。(同步/异步)
·void AddedControl(Control control, int index)把panel里面的服务端控件加到_addedControls这个集合里面,上面就是把Button1和Lable1加载。
·void OnLoad(EventArgs e)注册这个panel的隐含字段,就是上面的__CONTROL_FINGERPRINTS_AjaxPanel1。
·void OnPreRender(EventArgs e) :如果不是嵌套的panel加入隐含字段AjaxPanel1$RBS_Store和两个变量(RBS_Controls和RBS_Controls_Store)用处处理客户端AJAX调用。这里必要说明一下,这个隐含字段是用于类似ViewState的用途?
·void Render(HtmlTextWriter writer)把非嵌套的panel输出成<span>,就是上面的<span id='AjaxPanel1$RBS_Holder'> ,如果是嵌套的panel就只有顶层的panel有这个<span>。
·void RenderChildren(HtmlTextWriter writer)把panel里面的子控件输出,非服务端控件输出不变。如果是服务端控件就把这个控件放在一个<span>里面,并且id为:控件名称+$ajaxdest,name为:__ajaxmark。最后如果IsPageNoStoreMode是true则注册一个js,他会在客户端执行(AJAXCbo.SetFieldIfEmptyScript),把控件的状态放到__CONTROL_FINGERPRINTS_AjaxPanel1这个隐含字段。
<script type='text/javascript'>
AJAXCbo.SetFieldIfEmptyScript(
"__CONTROL_FINGERPRINTS_AjaxPanel1","C04A0FC;Button1#7DA27781;Label1#31926D7E");
</script>
·void OnUnload(EventArgs e)IsPageNoStoreMode为true的话,会更新控件的更新控件的状态。


哈~好像写完了,最后给大家一个小秘诀。看看AjaxCallObject.js,当请求的时候,他会象GMail那样在右上脚出现一个Wait...的等待,很cool,你只要在这里做一个小更改,改CreateWaitElement那部分就能达到另外的效果。我这里把请求数据时,改成windows关机时,整个页面变灰的那种效果,类似的js如下:
<SCRIPT type="text/javascript">
    
<!--
    
function log_out()
    {
        ht1 
= parent.frames.item(0).document.getElementsByTagName("html");
        ht1[
0].style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
        ht2 
= document.getElementsByTagName("html");
        ht2[
0].style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
        
if (confirm('你是否确认注销?'))
        {
            
return true;
        }
        
else
        {
            ht1[
0].style.filter = "";
            ht2[
0].style.filter = "";
            
return false;
        }
    }
    
//-->
</SCRIPT>

OK~希望本文对你有用,最后请大家斧正文中的错误。

Feedback

# re: 剖析MagicAjax  回复  更多评论   

2005-12-08 22:16 by 纶巾客
好东西啊.

# re: 剖析MagicAjax  回复  更多评论   

2005-12-08 22:19 by 听棠.NET
有空研究研究!!谢

# re: 剖析MagicAjax  回复  更多评论   

2005-12-08 23:51 by 午夜寻欢
.net1.1的不知道支持不支持

# re: 剖析MagicAjax  回复  更多评论   

2005-12-08 23:52 by 午夜寻欢
不好意思 刚回复就看到1.1的下载地址了!
han

# re: 剖析MagicAjax  回复  更多评论   

2005-12-08 23:57 by 前进条幅
楼上,你真搞笑~

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 02:42 by 绿叶
补充一下:改最后那个windows关机效果的时候,要这句在aspx文件上面。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd" >

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 08:27 by 一帆(老鼠粮仓之路)
MagicAjax确实方便,楼主的文章确实写的好,但是我碰到了两个问题,不知道楼主能够帮忙解决么?:
1,在AjaxPanel里面放个PlaceHolder,如果动态加载net自带的服务器控件没有什么问题,但是如果动态加载CuteEditor就会出现一些错误,不知道是MagicAjax的原因还是CuteEditor的原因?
2,当用客户端脚本调用服务器方法的时候,首先必须AJAXCbo.DoAjaxCall('','RunServerMethod');其中的RunServerMethod是要发送到服务器端的参数,服务器端方法再If (MagicAjaxContext.Current.IsAjaxCallForPage(this))
{
switch (MagicAjaxContext.Current.AjaxCallArgument)
{
case "RunServerMethod":
RunServerMethod();
break;
}
}

这个时候问题来了,因为是根据客户端发来的参数来确定调用什么服务器方法,如果发来的参数都是一段很长的html呢?而且不同的客户js发来不同的参数,这里怎么办?而且放到AjaxPanel里的任何服务器控件的服务器 方法所传递给服务器方法的参数是"";

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 08:31 by 阿不
前几天也下载了,还没去看呢.不过能更新ViewState是真的很不错.

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 08:51 by DDL
好东西啊。谢谢了

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 09:59 by 狮子座小哲
叶子能详细说一下如何改代码和应用来实现注销那种效果么?谢谢了,我对这个挺好奇的

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 10:04 by 狮子座小哲
还有个问题就是如何改变那个很cool的Wait...的等待显示位置,找了一会,没有头绪

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 10:14 by 狮子座小哲
很cool的Wait...的等待显示位置我已经找到修改的位置了,在这个函数里改就可以

function MoveWaitElement()
{
if (!waitElement)
CreateWaitElement();

var width = document.body.clientWidth;
waitElement.style.top = document.body.scrollTop;
waitElement.style.left = width + document.body.offsetLeft - waitElement.offsetWidth;
}

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 10:20 by 垃圾猪
看不去不错,下了看看先

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 10:37 by Boler Guo
先标记一下,现在的项目用不到,说不定下一个项目就可以用上了!

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 11:43 by 绿叶
出差两天,回来再和大家探讨,大家不要忘记把自己的使用心得发上来哦~

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 13:12 by sharp-edge
哈哈,本来我也想写一篇的,被你抢先了,呵呵
写得不错,下一篇可以考虑分析一下服务端的源码

# re: 剖析MagicAjax  回复  更多评论   

2005-12-09 13:30 by lovecherry
自己机器上能使用,传到服务器,分页的时候只出现loading没有反映了,怎么回事

# re: 剖析MagicAjax  回复  更多评论   

2005-12-23 01:32 by 猪猪
请教:为什么我出现
Unable to find script library '/AjaxCallObject.js'
的错误?

我用.NET 1.1,VS.2003

看到出来的网页的源码里有一句
<script type="text/javascript" src="0.2.2.26746/AjaxCallObject.js.aspx"></script>

谁能点一下吗?
非常感谢!

# re: 剖析MagicAjax  回复  更多评论   

2005-12-26 17:39 by 阿不
@ 猪猪
在web.config里加上
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>

# re: 剖析MagicAjax  回复  更多评论   

2005-12-26 18:55 by onekey
2.0不支持中文是为什么?
我改Web.Config文件为gb2312了啊

# re: 剖析MagicAjax  回复  更多评论   

2005-12-29 22:15 by onekey
还有一个问题就是 magicajax如何能够通过js去调用后台的方法?
像ajaxpro.net那样

# re: 剖析MagicAjax  回复  更多评论   

2005-12-29 23:45 by 绿叶
@onekey
我看了看,好像没有对xmlHTTP的封装,你可以通过第三方的js达到目的,比如:Prototype

# re: 剖析MagicAjax  回复  更多评论   

2005-12-30 13:23 by 阿不
@onekey
好像是啊,我昨天发现使用了MagicAjax后,会出现乱码的情况.这可不好啊.我在项目可是使用这东西的啊.应该算是一个BUG吧?

# re: 剖析MagicAjax  回复  更多评论   

2006-01-09 11:33 by hai
我这现在下载不到了,一直连接不上啊
那位有的,请发一个支持.net1.1的给我!万分感谢!~~~~~~~~!

# re: 剖析MagicAjax  回复  更多评论   

2006-01-09 11:35 by hai
我这现在下载不到了,一直连接不上啊
那位有的,请发一个支持.net1.1的给我!万分感谢!~~~~~~~~!
Mail:xch#inetcop.com.cn

# re: 剖析MagicAjax  回复  更多评论   

2006-01-09 14:57 by 长江
我有一个问题,大概大家都没碰到。
就是:我是用GDI+做的一个条形统计图,因为做这个统计图不用任何控件,也就不存在“拉拉控件”的工作了,我是把统计图写在一个自定义的函数里,在页面加载的时候调用这个函数,统计图就出来了。现在我想实现的是: 每5秒自动刷新一次统计图。请问楼主绿叶和各位大峡怎样才能使用MagicAjax 来实现呢!??????

-------------------------------急呀,请各位帮忙解决啊!~~~~~~!------------------

# re: 剖析MagicAjax  回复  更多评论   

2006-01-09 17:15 by 绿叶
@长江
magicajax的客户端没有对xmlhttp的封装,5秒刷新一次,你可以做个timer,然后用property1.31中里面有对xmlhttp的封装,用new Ajax.Request(....)来请求页面,并成功后set到相应的div里面,当然最简便的方法还有一个Ajax.Update(...)的,详细的文档你可以看:
http://www.sergiopereira.com/articles/prototype.js.html
如果要中文的文档这里:
https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html

# re: 剖析MagicAjax  回复  更多评论   

2006-01-21 12:33 by @长江
用下面这种方式就可以了。
private void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// For automatic CallBack every 10 seconds.
MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(10000);
}
UpdateChart();
}

# re: 剖析MagicAjax  回复  更多评论   

2006-01-23 20:20 by 农民
挺好的,

# re: 剖析MagicAjax  回复  更多评论   

2006-02-05 16:17 by AlexHe
asp.net 2.0中需要把AjaxCallObject.js用写字板转换为utf-8格式,便能使用中文了

# re: 剖析MagicAjax  回复  更多评论   

2006-02-14 17:58 by 听棠.NET
楼主,我在MagicAjax里,想输入客户端脚本,但是使用Response.Write("<script>...</script>");不行的,不知道如何输入出我的客户端脚本呢?

# re: 剖析MagicAjax  回复  更多评论   

2006-02-15 11:44 by 绿叶
尝试用:
AjaxCallHelper.WriteXXXX(...);

# re: 剖析MagicAjax  回复  更多评论   

2006-03-30 00:01 by william_ni
麻烦问一下楼主

读取数据时 实现类似windows机关的效果是怎么弄呀?

文中说了一下,但不知如何操作,是否可以给个demo工程学习一下呀?

nhl_dotnet@126.com

谢谢了。

# re: 剖析MagicAjax  回复  更多评论   

2006-03-30 09:13 by 绿叶
上面的回复已经说了,就是把wait element改成另外段js就可实现。

# re: 剖析MagicAjax  回复  更多评论   

2006-04-03 23:42 by dontunderstand@brazil.com.br
Hi Guys,
I am from brazil. I am experiencing this same error. But I dont understand this language. Why dont you create messages in English ?

sincerely,

Rogerio Lima

# re: 剖析MagicAjax  回复  更多评论   

2006-04-21 16:20 by 小笨笨
叶子,你的MSN或QQ是多少啊,想向你请教下关于MagicAjax的东西啊

# re: 剖析MagicAjax  回复  更多评论   

2006-05-20 03:03 by johnsonleee
楼主有没有发现,magicAjax有一个问题:它不能与 multipart/form-data 的窗体一起工作。
我粗略地看过它的源码,在AjaxCallObject.js中,它把所有的http提交动作都设置为 application/x-www-form-urlencoded 这种方式的,所以不能上传数据。不知有没有什么方法解决这个问题?

# re: 剖析MagicAjax  回复  更多评论   

2006-05-20 22:55 by wang
UPLOAD控件是不能用的,在它的说明文档里有记载,但我发现了另一个问题,就是在页面中不能用WebPartManager.GetCurrentWebPartManager(Page).Personalization.ResetPersonalizationState();
如果把这放到AJAXPANL的外面也是不行的,会出现JS错误,刚发现,具体错误还没研究,正在想解决方法。

# re: 剖析MagicAjax  回复  更多评论   

2006-05-25 12:19 by SoCooLQ
@dontunderstand@brazil.com.br

hi, Rogerio Lima

Unable to find script library '/AjaxCallObject.js' ?

please copy the folder( "script" ) to your project folder

# re: 剖析MagicAjax  回复  更多评论   

2006-06-09 14:15 by xiaoming
楼主你好
我最近用magicajax时发现把textbox放到magicajax panel里,textbox会把"<"显示为"&lt;",">"显示为"&gt;"。楼主知不知道如何让textbox正确显示啊?谢谢了!

# re: 剖析MagicAjax  回复  更多评论   

2006-07-13 12:42 by NetFans and Ajax.netFans
楼主,这个我在ASP.NET2.0里面做过GridView控件无刷新页面效果不错,但是目前遇到一个这样的问题,不知道你能否帮忙解决,GridView里面有一个编辑的模板列,点击时会跳转另一页面,但是加了magicajax这个东西后,页面不能跳转了,不知道我这样说你清楚了没有, 我的QQ254524007,E-Mail:lzhang4@gmail.com

# re: 剖析MagicAjax  回复  更多评论   

2006-07-14 10:48 by nibillyxjz
AjaxCallObject.js 这个文件到底放在哪 什么目录下?? 为什么我改不了WAITING内容阿 JS文件改过了

# re: 剖析MagicAjax  回复  更多评论   

2006-07-14 11:01 by nibillyxjz
分析器错误信息: 无法识别的配置节“magicAjax”

行 107:
行 108: </system.web>
行 109: <magicAjax tracing="false" scriptPath="~/script">
行 110: <pageStore/>
行 111: </magicAjax>


为什么不识别??

# re: 剖析MagicAjax  回复  更多评论   

2006-07-21 11:14 by tony22
楼主

我用了magicAjax 0.3.0

TextBox1包含在ajaxpanle里

但是 在cs页面里写 TextBox1.Foucs() 就不起作用了 客户端脚本报错

请问怎么解决?

# re: 剖析MagicAjax  回复  更多评论   

2006-07-22 15:15 by onekey
tony22 :
加上Form名

# re: 剖析MagicAjax  回复  更多评论   

2006-07-24 23:07 by shenfeng
我用VS2005开发一个项目,用MagicAjax 控件实现页面提交时不用刷新

遇到一个问题,在我本地是好的,便发布到server后访问signup.aspx页面报错
报错信息如下:
Attempted to access a field that is not accessible by the caller.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

所有用到了这个控件的页面都不能访问,是不是server机器要设置什么东西啊?
急啊,好多天了!!!!!!!
谢谢!!!!!!!!!

# re: 剖析MagicAjax  回复  更多评论   

2006-07-24 23:09 by shenfeng
再加一句,我用的是MagicAjax 0.3,
在我本地的机器测试通过,只是发布到server上后才报上面的错,很是奇怪

# re: 剖析MagicAjax  回复  更多评论   

2006-08-10 17:37 by sususu
对TREE VIEW的HTML控件使用magicajax技术,出现数结构混乱,如下:“
总部 东区 上海分公司 上海郊县办事处 上海市东办事处 上海市北办事处 上海市南办事处 苏州分公司 苏州办事处”,本来应该是树状结构,现在变成一堆文本。哪位大峡有办法?

# re: 剖析MagicAjax  回复  更多评论   

2006-08-14 16:26 by samsungren
楼主

我用了magicAjax 0.3.0

TextBox1包含在ajaxpanle里

但是 在cs页面里写 TextBox1.Foucs() 就不起作用了 客户端脚本报错

请问怎么解决?

加form名,如何书写语句?我试了好多都报JS错!!

# re: 剖析MagicAjax  回复  更多评论   

2006-08-14 17:52 by ccj
请教:我用.NET 1.1,VS.2003,magicAjax 0.3.0
为什么我出现
Unable to find script library '/AjaxCallObject.js'
的错误?

在WEB。CONFIG里也加了

<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>

# re: 剖析MagicAjax  回复  更多评论   

2006-08-14 17:52 by ccj
请教:我用.NET 1.1,VS.2003,magicAjax 0.3.0
为什么我出现
Unable to find script library '/AjaxCallObject.js'
的错误?

在WEB。CONFIG里也加了

<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>

# re: 剖析MagicAjax  回复  更多评论   

2006-08-15 10:45 by temp
@samsungren
the id of the TextBox has been changed by MagicAjax,so the JS generated by ASP.NET is not fittable. check the html source to find the solution.

# re: 剖析MagicAjax  回复  更多评论   

2006-08-15 16:48 by samsungren
by temp


form1.FindControl(this.txt_query.ID).Focus();

语句执行成功!但txt_query得不到焦点,好像每MAGICAJAX组件拦截!

怎么解决?
难道要像网上讲的一样要在PAGE_LOAD事件处理吗?

# re: 剖析MagicAjax  回复  更多评论   

2006-09-29 10:26 by zhao
请问我在用了ajaxpanel的页面的cs里,写关于viewstate[]和session[]的代码为什么都付不进去值呢?

# re: 剖析MagicAjax  回复  更多评论   

2006-10-26 19:06 by QQ:7467494
请问哪位有用magicajax做3级联动菜单的

汗 会出现一个问题 1级改变的时候 改变2级选项是改变不了的

跟踪结果是 1级改变时 改变2级时 始终先触发1级的change事件 将2级又初始化 又变回默认值 改变不了选项

不知道哪位前辈知道如何解决

# re: MagicAjax  回复  更多评论   

2006-10-31 14:40 by С
жļAB,BļһAjaxZoneؼҴAļServer.Transfer( "B" );ʱʾdocument.form["__MAGICAJAX_SCRIPT_FINGERPRINTS"].valueΪջΪô£

# re: 剖析MagicAjax  回复  更多评论   

2006-10-31 14:41 by С
我有二个文件A、B,B文件有一个AjaxZone控件,当我从A文件Server.Transfer( "B" );的时候出错,提示document.form["__MAGICAJAX_SCRIPT_FINGERPRINTS"].valu为空或不存在,怎么回事???

# re: 剖析MagicAjax  回复  更多评论   

2006-11-01 15:22 by NetFans[匿名]
我最近用magicajax时发现把textbox放到magicajax panel里,textbox会把"<"显示为"&lt;",">"显示为"&gt;"。楼主知不知道如何让textbox正确显示啊?谢谢了!

# re: 剖析MagicAjax  回复  更多评论   

2006-11-09 14:31 by nicholas_zhang2006@hotmail.com
请问用magicajax后页面的横向滚动条会无限拉伸,有遇到过和解决方案么?谢谢! 
原创粉丝点击