关于MagicAjax的用法


  最近,用了一下MagicAjax 觉得不错,使用很简单,经验终结如下:

  1、打开vs 添加 MagicAjax.dll,就会有AjaxPanel 控件,就往上拖东西吧。(简单吧!)
  2、打开web.config 添加:

        <configSections>
           <section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
        </configSections>

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

       以上两步就可以实现Ajax了,是不是很简单。如果你觉得loading....很难看,接着来。



 3、首先,下载magicAjax源码,拷贝script目录到你的目录里。

4、 打开web.config 添加:

           <magicAjax tracing="false" scriptPath="~/script">
            <pageStore/>
           </magicAjax>

5、 打开script目录,编辑AjaxCallObject.js(在最后)找到并改成下面的,
           .....
                  function CreateWaitElement() {
                      var elem = document.getElementById('__AjaxCall_Wait');
                   if (!elem) {
                             elem = document.createElement("div");
                             elem.id = '__AjaxCall_Wait';
                             elem.style.position = 'absolute';
                             elem.style.height = 17;
                             elem.border = "1px";
                             elem.style.paddingLeft = "3px";
                             elem.style.paddingRight = "3px";
                             elem.style.fontSize = "12px";
                             elem.style.borderColor = "#990000";
                             elem.style.borderWidth = "0";
                             elem.style.borderStyle="solid";
                             elem.style.backgroundColor = "#990000";
                             elem.style.color = "#FFFFFF";
                             elem.innerHTML = "正在加载...";
                             elem.style.visibility = 'hidden';

                        document.body.insertBefore(elem, document.body.firstChild);    
                }
                     waitElement = elem;   
                   }
                    // end wait element
      
           试一下 ,看看效果,怎么出现乱码?别急,接着改。

6、 打开web.config 改
       第一:<?xml version="1.0" encoding="gb2312" ?>
       第二:添加
                      <globalization
                               requestEncoding="gb2312"
                                responseEncoding="gb2312"
                           />
         
       好,再试试!如何,不错吧!大家可能还有更好的方法,期待高手指点!

 

      
 






posted on 2006-01-30 22:43 azhai 阅读(4938) 评论(14)  编辑 收藏 网摘

评论

#1楼 [楼主] 2006-01-30 22:52 azhai      

再加一个定时刷新的:
...
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//每10秒刷新
MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(10000);
}
this.Label1.Text = DateTime.Now.ToString();

}
....   回复  引用  查看    

#2楼  2006-02-15 09:20 听棠.NET      

在MagicAjax里如何输出客户端脚本呢?我用Response.Write("<script>....</script>");不行的!!!真不知道如何做?   回复  引用  查看    

#3楼 [楼主] 2006-02-17 10:06 azhai      

自从MA 0.2.x发行以来都不能支持JS的中文,比如把JS脚本中的那个"Loading ..."换成"数据加载中 ..."后,再运行时出现的那个条就是乱码。如果更改编码格式页面又会乱掉。

哈哈,下载MA的源代码包,打开MagicAjaxModule.cs文件,看到
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;

// Init private fields
_threadAbortExceptionThrown = false;
_request = context.Request;
_response = context.Response;


// Create a new context and add it to the items collection for later retrieval
// by MagicAjaxContext.Current
_magicAjaxContext = new MagicAjaxContext();
HttpContext.Current.Items.Add(MagicAjaxContext.ContextKey, _magicAjaxContext);

// Check if the request is for the embedded AjaxCallObject.js script
if (context.Request.RawUrl.EndsWith("AjaxCallObject.js.aspx"))
{
context.Response.ContentType = "text/javascript";
object cachedAjaxCallObjectJs = context.Cache["__CACHED_AJAXCALLOBJECT_JS"];
if (cachedAjaxCallObjectJs == null)
{
//read and output the embedded AjaxCallObject.js file from the manifest
using (System.IO.StreamReader reader = new System.IO.StreamReader(typeof(MagicAjaxModule).Assembly.GetManifestResourceStream("MagicAjax.script.AjaxCallObject.js")))
{
cachedAjaxCallObjectJs = reader.ReadToEnd();
}
context.Cache.Insert("__CACHED_AJAXCALLOBJECT_JS", cachedAjaxCallObjectJs);
}
context.Response.Write(cachedAjaxCallObjectJs);
context.Response.Cache.SetExpires(DateTime.Now.AddYears(1));
context.Response.End();
}
}

噢,这样呀,让它支持GB2312不就行了。

protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;

// Init private fields
_threadAbortExceptionThrown = false;
_request = context.Request;
_response = context.Response;
_response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

// Create a new context and add it to the items collection for later retrieval
// by MagicAjaxContext.Current
_magicAjaxContext = new MagicAjaxContext();
HttpContext.Current.Items.Add(MagicAjaxContext.ContextKey, _magicAjaxContext);

// Check if the request is for the embedded AjaxCallObject.js script
if (context.Request.RawUrl.EndsWith("AjaxCallObject.js.aspx"))
...

加入了_response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

编译Release文件,然后再使用这个新的DLL就OK了。


  回复  引用  查看    

#4楼  2006-03-01 17:01 陌生海岸      

关注。。。。   回复  引用  查看    

#5楼  2006-05-25 11:11 SoCooLQ [未注册用户]

直接把JS文件存问为UTF-8格式也可以可以解决中文出现乱码问题!!   回复  引用    

#6楼  2006-05-25 11:13 SoCooLQ [未注册用户]

@听棠.NET

在。NET里Response.Write("<script>....</script>");不行吗?
出错原因是什么?
  回复  引用    

#7楼  2006-05-25 12:22 SoCooLQ [未注册用户]

@听棠.NET

试试这句:

MagicAjax.AjaxCallHelper.WriteAlert(string message);   回复  引用    

#8楼  2006-06-16 11:01 sky_ing [未注册用户]

请问,怎么样把 右上角的 "loading"闪烁的灰框去掉呢?   回复  引用    

#9楼  2006-07-31 09:34 xu [未注册用户]

有一个问题想请教一下:
为什么用MAGIC AJAX 每次只能一次成功操作,在PANEL 里的(自定义控件)按钮点第二次就没又反映了,极度郁闷中. 望高手能帮忙解决一下~   回复  引用    

#10楼  2006-11-21 12:07 canbo[匿名] [未注册用户]

用magicajax自定义js函数的方法如下:

AjaxCallHelper.WriteAddHiddenFieldScript("nodeid",nodeid);
AjaxCallHelper.WriteAddHiddenFieldScript("IpAddress",ipaddress);
AjaxCallHelper.Write( "ShowOtherWind();");   回复  引用    

#11楼  2007-07-26 17:42 wlzxdm [未注册用户]

楼主大哥写的很好,不过那个闪烁的Loading真的去不了。。   回复  引用    

#12楼  2008-02-14 16:39 4094 [未注册用户]

--引用--------------------------------------------------
xu: 有一个问题想请教一下:
为什么用MAGIC AJAX 每次只能一次成功操作,在PANEL 里的(自定义控件)按钮点第二次就没又反映了,极度郁闷中. 望高手能帮忙解决一下~
--------------------------------------------------------
  回复  引用    

#13楼  2008-03-08 13:14 Leon916      

博主,我再用ajax的时候出现了“/MagicAjax”应用程序中的服务器错误,不知道怎么配置,请赐教!   回复  引用  查看    

#14楼  2008-07-18 16:28 cklll [未注册用户]

很适用。。。   回复  引用    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接:
 

导航

<2006年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

与我联系

搜索

 

常用链接

留言簿(7)

我参与的团队

随笔档案

最新评论

阅读排行榜

评论排行榜