zoukankan      html  css  js  c++  java
  • 打造颠覆你想象中的高性能,轻量级的webform框架---无刷新提交后台并返回参数(第五天)

            问题5:  使用aspx 页面执行后台方法,总是要刷新整个页面?我想提交后台不刷新页面,同时返回参数 执行前台的js 脚本,就是说类似于像 ajax 的效果一样,那我们该怎么做呢?

           大家是否已经看了前面的文章,下面我们来总结一下如何去实现?

           首先我们要知道 ,我们的aspx 页面 默认情况下 执行后台 是通过 form1 表单提交到后台的,而我们前面 <from>  标签中,有一个属性叫做  target的属性,系统默认情况下是“-self”,就是说返回的数据是指向自己的,表示整个页面会刷新,我们想不 刷新整个页面,我们只需要 在 界面上 放置一个隐藏的 <iframe>标签,同时将id=‘from1’ 的表单的属性target 指向 <iframe> 的name 的值,然后我们就会发现 ,aspx页面 执行后台后,页面没有刷新了。

          上面是对我前一堂课程的总结!!!下面我们来看一下 C# 后台如何传输参数到前台,同时让前台能够接收到后台传出的参数????

           其实写过 一般处理程序的人都知道,如何传递参数的,使用 Response.Write(“我是好人”);这样会将 这个值输入到  iframe 中,但是iframe中我们只需要我们传入的值,但是我们看到 iframe 中 除了 传入 我们需要的值之外还有很多我们不要的元素,所以我们要将这些不要的清除掉,怎么清除掉呢?

           

    我们可以这样写

       

     Response.ClearContent();
                Response.Write("我是好人");
               Response.End();
    

      大功告成,这样前台 iframe 只显示我们输出的值了。

          现在出现了另外一个问题,我们的前台如何 判断  ,后台c# 代码执行完成后再执行  前台的js方法?

        我曾经想过用 用 settimeout 去循环判断 iframe 中内容的值,虽然可以实现,但是容易陷入死循环,而且还有时间差,效果远不如 ajax 。

        如果不能这么做,我们可以从另外一个方面来入手,我们知道 iframe 是有一个load 的事件,我们这里必须使用 jquery的 事件绑定的方法,使用前要先去除绑定,然后在重新绑定,不然的话  iframe上就会不停的绑定不同的 load事件,代码实例如下:       

    $("#_NofreshIframe").unbind("load");
    $("#_NofreshIframe").bind("load", function () {   alert(1)  });

        我们来测试一下,确实能在后台代码执行完成后能执行iframe的  load事件。

       那我们需要获取iframe 中的值就很容易了,这里我们这样获取iframe中的值, 

        var result = $(window.frames["_NofreshIframe"].document).text();

      这个方法能兼容所有的浏览器的所有版本,以及iframe 跨域的问题。

    其实说了这么多,讲了这么多废话,其实离我们的最终目的快要达到,就是要  打造一个 类似于 ajax 的方法,能够传输到后台,并返回参数,我们需要做的就是对前面的这些东西进行 类似于  ajax  post 提交 的 封装,以及对 后期产生问题的展望!!!!

            

      

  • 相关阅读:
    【Project Euler】1 第一题
    【OpenCV归纳】5 图像处理
    【OpenCV归纳】4 关于HighGUI
    【OpenCV归纳】3 在实例中学习简单函数以及数据读写
    【OpenCV归纳】2 读写视频
    【OpenCV归纳】1 体验OpenCV
    【SICP练习】27 练习1.33
    【SICP练习】26 练习1.32
    【SICP练习】25 练习1.31
    【SICP练习】24 练习1.30
  • 原文地址:https://www.cnblogs.com/liujing379069296/p/7350044.html
Copyright © 2011-2022 走看看