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

问题3:使用webform,每次提交后台界面都要刷新,能不能让我们与后台
交互的时候像ajax一样,界面不用刷新,同时还能返回参数并且继续在前台执行??

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

相信很多人和我一样,这也是很多人开发放弃webform最重要的原因吧!!这也是很多人觉得webform不好的原因吧!!!其实mvc提交form表单
也会刷新,但是 视图中没有像webfrom一样的后台,所以必须使用 ajax
的方法提交后台,所以没有刷新!

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

其实这个问题的解决方案早在很多年前就已经解决了,只是知道的人不多,所以大家的印象中一直认为webform
提交后台总是要界面刷新。这里呢,我提供的2个种解决方案,也是我们工作和学习中常见的2个解决方案。

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

第一种方法是使用 jquery.form.js 的插件,我们只需要将$.sumit()
改为$.ajaxSubmit();

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

例如:

yzc579亚洲城官网 1

function ajaxGohoutai(fangfa,canshu,aftergo) {
.//前台传入参数和方法名字,后台自动绑定执行方法
$(“#hid_fangfa”).val;
$(“#hid_canshu”).val;

我们可以这样写

$.ajaxSubmit(function {

 Response.ClearContent();            Response.Write;           Response.End();

aftergo;

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

});

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

}

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

实例:

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

  <input  type="button"  onclick="ajaxgo()"  value="ajax提交1个参数" />function ajaxgo(){ajaxGohoutai("ajax", "我不是人", function  {alert;});}

$(“#_NofreshIframe”).unbind;
$(“#_NofreshIframe”).bind(“load”, function () { alert;

  使用插件不是我们的初衷,我们希望能够用我们的代码去控制我们想要得到的数据以及能够控制form表单输出的数据,因为我们还是不知道
form表单能够无刷新提交?

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

想要弄懂这些个为什么,我们必须要懂得form表单的属性,为了让大家更好的了解form
表单 属性,我们来拿生活中常见 买菜的例子为例子。

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

表单提交其实就是一个买菜的过程,买菜钱你要准备钱等一些东西,这个东西就是我们
表单控件中的 用 name 属性标记的, 它告诉们这些是我们需要提交的东西。

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

买菜我们需要知道是什么方式去买菜,坐车还是走路,还是其他方法,这个就是form表单的method
属性 包括post,get,delete,put 属性。

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

买菜我们要知道去哪里买菜?是去超市买菜,还是去菜市场买菜,还是去其他地方买菜,这属性就是我们的
action的属性,系统默认的为
该页面本身地址的后台,其实我们只需要改变form1表单的地址,同样我们可以提交到其他页面。

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

买完菜之后我们需要将什么地方重写布置一下?这里的布置就是刷新的意思,系统默认的
页面本身的地址 ,系统默认属性为target=“_self”, 下面为其他属性。

_blank 在新窗口中打开。
_self 默认。在相同的框架中打开。
_parent 在父框架集中打开。
_top 在整个窗口中打开。
framename 在指定的框架中打开。

通过以上的属性可以看出,导致form 表单提交后界面被刷新的罪魁祸首是
target=“_self”的属性,它指向了自己,如果想界面不被刷新,我们看了一下,好像只能将target指向一个
iframe
的name的值,界面似乎就可以不被刷新了。下面我们来试一下呗!!!!!在前面代码的基础上,我们只需要将提交的代码修改成这样。

yzc579亚洲城官网,第一步 : 前台加入 一个隐藏的iframe 。

<iframe name=”_NofreshIframe”
style=”display:none;”></iframe>

第二步:修改我们以往的方法,在form表单提交将 target指向 为 iframe
的值,我们就可以不刷新提交了。

例如:

$.attr(“target”, “_NofreshIframe”);
$.submit();

然后我们测试 发现界面确实没有刷新了,而且也能够做到无刷新提交到后台了。

但是我们发现,这还是不能达到我们想要的效果,什么效果呢?我们需要在后台执行完成后能马上执行前台,并且还能够将参数传递给前台,简单点说就是要做到和ajax
的效果一样!!!!!

没办法,那执行放到下期去解决!!!!!!!

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注