`

页面局部刷新的两种方式:form+iframe 和 ajax

阅读更多
1 使用form做提交,target设为iframe的name:
引用

 <iframe name="info" id="info" frameborder="0"
        		src=""
        		scrolling="no" width="100%" height="1000"></iframe>

<form id="mapForm" name="mapForm" action="" method="post" [b]target="info"[/b]>



2 使用ajax。以div域的局部刷新为例,假设页面中有
<div id="mapDiv" name="mapDiv">
,在ajax的回调方法中,使用document.getElementById("mapDiv").innerHTML =xmlhttp.responseText即可实现该div区域的局部刷新。
birt结合ajax做报表区域局部刷新的例子:
http://www.roseindia.net/answers/viewanswers/1936.html
var xmlhttp = new getXMLObject();
function 调用ajax的函数() {
		if(xmlhttp) { 
			//URL中带中文不行,故通过xmlhttp的send(params)来传递(中文)参数
			//var url = "<%=request.getContextPath()%>/preview?__report=rptfiles/tuition_map.rptdesign&startDate=${startDate}&endDate=${endDate}&province=" + encodeURIComponent(provinceName);
			
			var url = "<%=request.getContextPath()%>/preview";
			var params = "__report=rptfiles/tuition_map.rptdesign&startDate=${startDate}&endDate=${endDate}&province=" + provinceName;
			//alert(url);
			//alert(params);
			
			xmlhttp.open("POST",url,true); 
			xmlhttp.onreadystatechange = handleServerResponse;
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
			xmlhttp.send(params); 
		}
	}

	//XML OBJECT
	function getXMLObject() {
		var xmlHttp = false;
		try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers
		}
		catch (e) {
		try {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+
		}
		catch (e2) {
		xmlHttp = false // No Browser accepts the XMLHTTP Object then false
		}
		}
		if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
		xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers
		}
		return xmlHttp; // Mandatory Statement returning the ajax object created
	}

	function handleServerResponse() {
		if (xmlhttp.readyState == 4) {
			//if(xmlhttp.status == 200) {
			//alert(xmlhttp.responseText);
			document.getElementById("mapDiv").innerHTML =xmlhttp.responseText;
			//}
			// else {
			// alert("Error during AJAX call. Please try again");
			// }
		}
	}





Q & A:Div as Form Target,Possible?
Q:
引用
Does anyone know how to target a <DIV...>. I want to put an HTML form
in a DIV. When it's submitted, the results should show up within that
same DIV. Possible?
A:
引用
You can't target a div the way you can a frame;
you'd have to use AJAX techniques: have a button that triggers,
instead of a form submission, a call to a JavaScript function that
manually assembles and POSTs the same query that the browser would
assemble if you had really submitted the form, with a callback to a
JavaScript function that populates the div with the results.  There
are JavaScript libraries that make this task easier (dojo, Yahoo!,
etc), but you still need to know how to program...





关于ajax乱码问题:
使用以下代码,传给birt的中文省名provinceName老是乱码:
var url = "<%=request.getContextPath()%>/preview?__report=rptfiles/tuition_map.rptdesign&startDate=${startDate}&endDate=${endDate}&province=" + provinceName;
xmlhttp.open("POST",url,true); 
xmlhttp.onreadystatechange = 回调函数的名字;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
xmlhttp.send(null); 
使用什么escape() encodeURI() encodeURIComponent()对url中的中文provinceName做转化都无法解决问题;

后改成通过XmlHttpRequest的send方法来传参,解决了这个乱码问题:
var url = "<%=request.getContextPath()%>/preview";
var params = "__report=rptfiles/tuition_map.rptdesign&startDate=${startDate}&endDate=${endDate}&province=" + provinceName;
xmlhttp.open("POST",url,true); 
xmlhttp.onreadystatechange = 回调函数的名字;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
xmlhttp.send(params); 

貌似得出的结论就是:
如果使用ajax做中文参数的传递,不要在url中做中文参数的追加,使用XmlHttpRequest.send(参数串)来传参,参数串里的中文就不会乱码。
分享到:
评论
1 楼 a535114641 2015-03-25  
LZ你好, 用了这个方法后子页面里的JS方法就全不能用了呀

相关推荐

    使用Ajax实现页面无刷新(局部刷新),

    **Ajax技术详解与实战——实现页面无刷新登录** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它的核心是JavaScript对象XMLHttpRequest,通过这个对象...

    Ajax应用:jQuery+PHP+MySQL发表评论

    Ajax(Asynchronous JavaScript and XML)技术是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。在本文中,我们将探讨如何使用jQuery、PHP...

    iframe实现页面局部刷新操作

    `iframe`是一种HTML元素,它可以在一个网页中嵌入另一个网页,使得我们可以在独立的框架内加载和显示内容,从而实现局部刷新的效果。在本案例中,我们将讨论如何利用`iframe`来实现图片的上传和无刷新展示,以及涉及...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    详解Ajax和form+iframe 实现文件上传的方法(两种方式)

    本文将详细解释如何使用Ajax和form+iframe两种方式来实现文件上传功能。 ### Ajax文件上传 Ajax(Asynchronous JavaScript and XML)技术允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。...

    HTML+CSS+ajax+php+mysql实现登录

    3. **Ajax**:AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下更新部分网页的技术。在这个项目中,`js`文件夹中的JavaScript代码(如`ajax.js`)可能包含了使用`XMLHttpRequest`对象实现...

    .net+ajax+jquery.form实现简单的图片批量上传源码

    其次,`AJAX`(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。在批量图片上传中,`AJAX`使得用户可以在上传图片时无需等待页面刷新,提高用户体验。`...

    三层+EasyUI+Ajax

    3. **Ajax**:Ajax的核心是利用JavaScript向服务器发送异步请求,接收响应并在客户端处理,使得页面可以局部更新,提高了用户体验。在本场景中,用户填写表单后,通过Ajax将数据发送至服务器,避免了整个页面的刷新...

    Struts2+jQuery(不用JSON)实现局部刷新

    - 安全性:使用AJAX和局部刷新时,应考虑XSS攻击,确保返回的数据已进行了适当的转义和过滤。 - 缓存:可能需要禁用AJAX请求的缓存,以防止显示过期数据。 - 错误处理:添加错误处理代码,处理可能出现的网络或...

    运用ajax局部刷新 制作登录验证

    Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这在登录验证场景中尤为重要,因为它可以避免每次提交表单时页面...

    php+iframe 无刷新上传

    在这里,“php+iframe 无刷新上传”是指利用`PHP`处理文件上传,同时结合`iframe`技术,使得用户在上传文件时页面不发生整体刷新,提供更好的用户体验。 1. **PHP文件上传原理** PHP文件上传主要依赖`$_FILES`全局...

    基于AdminLTE(bootstrap)用iframe实现的局部刷新的案例

    在本文中,我们将深入探讨如何基于AdminLTE,利用Bootstrap框架,使用JavaScript和iframe技术实现局部刷新功能。AdminLTE是一款流行的后台管理模板,它基于Bootstrap,提供了丰富的组件和强大的功能,适用于构建现代...

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    通过Ajax异步传输,用户可以在不刷新页面的情况下完成文件上传,提升用户体验。 首先,我们来了解一下这个系统的组成部分: 1. **前端界面**:通常使用HTML和jQuery构建。HTML表单用于选择文件,jQuery用于处理...

    Django之Form表单验证及Ajax验证方式汇总

    1. **Ajax基础**:Ajax(Asynchronous JavaScript and XML)允许前端与后端进行异步通信,无需刷新页面。在Django中,通常使用jQuery库来实现Ajax请求。 2. **创建Ajax请求**:在`login_js.html`或`login.html`的...

    JS页面跳转和js对iframe进行页面跳转、刷新

    以上介绍了几种常见的JS页面跳转和对iframe进行页面跳转与刷新的方法。开发者可以根据实际需求选择合适的方式,以达到预期的页面导航效果。需要注意的是,在进行页面跳转和刷新操作时,应考虑到用户体验和浏览器的...

    ajax提交form表单和上传图片

    在Web开发中,异步JavaScript和XML(Ajax)技术被广泛用于提高用户体验,尤其是在处理表单提交和文件上传时。本教程将详细讲解如何利用jQuery、jQuery Form插件以及Spring MVC框架来实现Ajax提交表单并上传图片。...

    使用隐藏的Iframe实现ajax无刷新上传

    使用隐藏的Iframe实现Ajax无刷新上传的基本思路是:创建一个隐藏的Iframe作为文件上传的目标,当用户选择文件并提交表单后,表单数据会通过POST方式发送到服务器端处理文件上传操作。由于Iframe的存在,上传过程不会...

    form+iframe解决跨域上传文件的方法

    `form+iframe`是一种常见的解决跨域上传文件的方法。这是因为HTML的`&lt;form&gt;`元素与`&lt;iframe&gt;`结合使用可以实现异步无刷新的数据提交,而`&lt;iframe&gt;`能够承载另一个源的页面,从而规避同源策略的限制。 首先,我们来...

    拒绝Ajax,同样让你的网页局部刷新,异步递交

    本篇文章将探讨如何在不依赖Ajax的情况下,依然能够实现在网页上的局部刷新和异步数据递交。 首先,我们可以利用HTML5引入的`&lt;form&gt;`元素的新特性,如`formaction`和`formmethod`属性,来实现异步提交。这些属性...

Global site tag (gtag.js) - Google Analytics