记录IIS7上配置.Net2010的mvc2遇到的jQuery关于ie的Ajax小问题..

 

 

最近几天搞了。Net mvc2的项目,在里面用到了mvc2里面自带的微软的AjaxjQuery

熟悉了一下mvc的流程,用Ajax做了一个网上聊天的小程序,主要意思是双方不停的用Ajax刷新同一个函数,如果有了变化则读取最新数据。

Mvc2是在。Net2010中的项目,用的是framework4,和一些新的架构,我在xpIIS上尝试配置,遇到了很多问题,于是采用win7IIS7做配置。

win7中安装iis7也是在控制面板=>

中选择

在安装IIS是切记要把asp.net勾选上。否则报错,我第一次就没勾选。

配置mvc2网站时,由于我用的是默认的framework4,而win7自带的是framework3.5,所以要先装framework4,新建网站的时候

应用程序池中选择自己所用的framework版本,这个我找了好久也没有找到如何更改。。。

Mvc2bin文件夹中,并不包含system.Web.Mvc.dll程序集,所以要在编译网站的时候,将此dll选择复制到本地。或者直接找到此dll放到bin文件夹下。否则会报错缺少此dll

不明白为什么微软不把此dll封装到framework4中,还要如此麻烦一下。

以上是此网站的配置过程。

下面是这个聊天网站的难点

通过查MSDN中的例子,我只学习到了如何在控件中运用微软的Ajax方法,确实很简单很爽.但是我想通过JavaScriptsetTimeout函数无限刷新一个Ajax函数,用来一直跟服务器交互,可是找了半天也没有找到调用方法,我指的是微软的那种AjaxOptions的方法,并不是最原始最根本的JavaScriptAjax方法.如果各位大哥谁知道请告诉小弟一声.

于是放弃微软的Ajax方法,改用jQuery.(反正框架中带而且这玩意还特火)

于是在jQuery的官网上查到了jQuery的最基本的方法.

发现只要符合AjaxURL符合微软mvc2的规定,还是能很容易的和controller中的函数交互但是中途发现了一个大问题,就是在Ajax不断的刷新页面的时候,2,3次的返回值是正确的,以后的返回值发生错误,这个问题郁闷了我很久,怎么也找不到原因,最后在各方努力之后,发现此问题只有在ie系列的浏览器有问题,chromeFirefox中都正常.我觉得这是jQueryie浏览器支持中的一个小bug…也越来越理解为何大家对ie浏览器的不爽...

下图是运行界面.

 

下面为controller中主要函数

public class yuanController : Controller

    {

        static List<string> database = null;

 

        /// <summary>

        /// ??À?¡é?Ì?¡¥ºy,®?¤¡äÀ¨ºº?º?¤?®D¨??¦Ì¢?¡ã

        /// </summary>

        /// <param name="count">¤¡é¨ª¨?¦Ì¡ãÌ?¬?ºy</param>¨²¤t?¡Â?¦Ì¡ãÌ?¬?ºy?À¨¨,¨???¨¤ª?,¨°¡é?¨²¨Y

        /// <returns>¤¦Ì??¨²¤t?¡ÂÌ?¬?ºy</returns>

        [ActionName("xun")]

        public void IsNew(int? count)

        {

            if (database == null)

            {

                Response.Write("-1");

                return;

            }

            else

            {

                //Response.Write("<script>alert(" + database.Count + ");</script>");

                Response.Write(Convert.ToString(database.Count - 1));

            }

            //if (database.Count-1 == count)

            //{

            //    Response.Write("¨¤Ì¨¨");

            //    //return Convert.ToString(database.Count - 1);

            //}

            //else

            //{

            //    Response.Write("?¨¤Ì¨¨");

            //    //return Convert.ToString(database.Count - 1);

            //}

           

        }

 

        /// <summary>

        /// ®?¡ìÌ?¦Ì¡ã¤?¤¡§

        /// </summary>

        /// <param name="shuru">®?¡ì¨´¦ÌÌ?¨²¨Y</param>

        /// <returns>¤¦Ì?¦Ì¡ã¨¦|</returns>

        [ActionName("speak")]

        public string speak(string shuru)

        {

            if (database == null)

            {

                database = new List<string>();

            }

 

            database.Add(Request.UserHostAddress.ToString() + ":<br />" + shuru + "<br />");

            return Convert.ToString(database.Count - 1);

        }

 

        /// <summary>

        /// ¨?Ì?ºyYÌ?¤?¤¡§,?º?¨?¤¦Ì?,?º?¤¦Ì??¨²®?¡ì?®DÌ?

        /// </summary>

        /// <param name="count">®?¡ì?¨²Ì?¦Ì¡ã¬?ºy</param>

        /// <returns>®?¡ì?¨²?®DÌ?¡ã</returns>

        [ActionName("getdate")]

        public void getdate(int? count)

        {

            string content = null;

            if (database != null)

            {

                for (int i = 0 /*Convert.ToInt32(count)*/; i < database.Count; i++)

                {

                    content += database[i];

                }

            }

            //return content;

            Response.Write(content);

 

        }

下面为aspx中主要函数

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>

<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<script type="text/javascript" >

    $(document).ready(function () {

        var mycount = -1;

        function yuan() {

            $.ajax({

                url: "yuan/xun", //?count=" + mycount,

                //type: "GET",

                //context: document.body,

                success: function (date1) {

                    if (mycount != date1) {

                        $("#status").html("®D?¨²¨Y,?°a¬¨¢¨? mycount=" + mycount + "  date1=" + date1);

                        myget(date1);

                    }

                    else {

                        $("#status").html("??¨²¨Y mycount=" + mycount + "  date1=" + date1);

                        //myget(date1);

                    }

                }

 

            });

 

            setTimeout(yuan, 1000);

        };

        yuan();

        function myget(count1) {

            $.ajax({

                url: "yuan/getdate",

                //type: "POST",

                //context: document.body,

                success: function (date2) {

                    $("#status").html("y¨²¬¨¢¨? mycount=" + mycount + "  count1=" + count1 + "  date2=" + date2);

                    var content = $("#yuan1").html() + date2;

                    $("#yuan1").html(date2);

                    mycount = count1;

                }

 

            });

        };

 

    });

<p>

<% using(Ajax.BeginForm("speak",

   new AjaxOptions{UpdateTargetId="textEntered1"})) { %>

     <%= Html.TextBox("shuru","Enter text")%> 

     <input type="submit" value="Submit"/><br />

     <span id="textEntered1">Nothing Entered</span>

<% } %>

</p>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值