几个月前,因为项目需求,我写了下面的三个ajax相关的函数。发布出来和大家分享。
第一个是用来无刷新加载一段HTML
第二个是把表单数据转换成一串请求字符串
第三个是结合函数一和函数二的无刷新提交表单实现。
还有一点要提到的是,无刷新表单提交,还不能对文件上传进行处理,这个主要是因为浏览器的安全设置。目前无刷新的上传,一般是用iframe来实现的。关于这个,我们在google里搜索能找到很多。
网上虽然已经有很多优秀的ajax的类和函数了,但是或许我这几个函数对大家还有点用处,于是我就发布出来了。
//@desc load a page(some html) via xmlhttp,and display on a container
//@param url the url of the page will load,such as "index.php"
//@param request request string to be sent,such as "action=1&name=surfchen"
//@param method POST or GET
//@param container the container object,the loaded page will display in container.innerHTML
//@usage
// ajaxLoadPage('index.php','action=1&name=surfchen','POST',document.getElementById('my_home'))
// suppose there is a html element of "my_home" id,such as "<span id='my_home'></span>"
//@author SurfChen <surfchen@gmail.com>
//@url http://www.surfchen.org/
//@license http://www.gnu.org/licenses/gpl.html GPL
function ajaxLoadPage(url,request,method,container)
{
method=method.toUpperCase();
var loading_msg='Loading...';//the text shows on the container on loading.
var loader=new XMLHttpRequest;//require Cross-Browser XMLHttpRequest
if (method=='GET')
{
urls=url.split("?");
if (urls[1]=='' || typeof urls[1]=='undefined')
{
url=urls[0]+"?"+request;
}
else
{
url=urls[0]+"?"+urls[1]+"&"+request;
}
request=null;//for GET method,loader should send NULL
}
loader.open(method,url,true);
if (method=="POST")
{
loader.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
loader.onreadystatechange=function(){
if (loader.readyState==1)
{
container.innerHTML=loading_msg;
}
if (loader.readyState==4)
{
container.innerHTML=loader.responseText;
}
}
loader.send(request);
}
//@desc transform the elements of a form object and their values into request string( such as "action=1&name=surfchen")
//@param form_obj the form object
//@usage formToRequestString(document.form1)
//@notice this function can not be used to upload a file.if there is a file input element,the func will take it as a text input.
// as I know,because of the security,in most of the browsers,we can not upload a file via xmlhttp.
// a solution is iframe.
//@author SurfChen <surfchen@gmail.com>
//@url http://www.surfchen.org/
//@license http://www.gnu.org/licenses/gpl.html GPL
function formToRequestString(form_obj)
{
var query_string='';
var and='';
//alert(form_obj.length);
for (i=0;i<form_obj.length ;i++ )
{
e=form_obj[i];
if (e.name!='')
{
if (e.type=='select-one')
{
element_value=e.options[e.selectedIndex].value;
}
else if (e.type=='checkbox' || e.type=='radio')
{
if (e.checked==false)
{
break;
}
element_value=e.value;
}
else
{
element_value=e.value;
}
query_string+=and+e.name+'='+element_value.replace(/\&/g,"%26");
and="&"
}
}
return query_string;
}
//@desc no refresh submit(ajax) by using ajaxLoadPage and formToRequestString
//@param form_obj the form object
//@param container the container object,the loaded page will display in container.innerHTML
//@usage ajaxFormSubmit(document.form1,document.getElementById('my_home'))
//@author SurfChen <surfchen@gmail.com>
//@url http://www.surfchen.org/
//@license http://www.gnu.org/licenses/gpl.html GPL
function ajaxFormSubmit(form_obj,container)
{
ajaxLoadPage(form_obj.getAttributeNode("action").value,formToRequestString(form_obj),form_obj.method,container)
}
分享到:
相关推荐
简单的ajaxt无刷新实现表单提交的实例(myeclipse 直接导入运行) 学习点: 1;ajax无刷新表单提交 2;ajax的运行历程 最简单明了的实例,清晰的帮你弄清上述概念,运行简单,只需解压该包,然后Myeclipse中file - ...
### PHP无刷新提交表单知识点解析 #### 一、无刷新提交的概念与应用场景 ...通过以上分析可以看出,无刷新提交表单是一种非常实用的技术,它不仅能够提升用户体验,还能使开发者更加灵活地构建动态网页应用。
而无刷新提交表单则是利用Ajax技术,通过JavaScript向服务器发送异步请求,只更新部分页面内容。当用户在弹出的DIV中填写完表单并点击提交后,JavaScript会捕获提交事件,阻止默认的表单提交行为,然后发送Ajax请求...
用iframe提交表单,主要是将表单提交到iframe中,可实现无刷新提交。 html页面: <iframe name="FORMSUBMIT" width="1" height="1" ></iframe> ...
ASP.NET和JavaScript结合实现无刷新提交是Web开发中的一个重要技术,它使得用户在与网页交互时无需等待页面完全刷新,从而提升用户体验。无刷新提交,也称为Ajax(Asynchronous JavaScript and XML)技术,通过在...
"jQuery Ajax无刷新提交表单并执行邮件通知"这个主题涉及了两个关键点:一是利用jQuery进行表单验证,二是通过Ajax实现无刷新提交表单,同时触发邮件通知功能。 **1. jQuery表单验证** jQuery提供了丰富的DOM操作...
本文将详细介绍如何在MVC框架下实现无刷新提交。 1. **无刷新提交原理**: 无刷新提交基于Ajax(Asynchronous JavaScript and XML)技术,它利用JavaScript异步地向服务器发送请求,并在后台处理数据,然后只更新...
本篇将介绍一种不使用Ajax实现无刷新提交表单的方法。 首先,我们需要一个HTML表单,这个表单将包含用户需要填写的数据。在给定的示例中,表单是通过`<form>`元素创建的: ```html ("~/Backstage/MachineMng/...
"PHP无刷新提交"指的是利用PHP技术实现的一种用户界面交互方式,它允许用户在不刷新整个网页的情况下发送数据到服务器并接收反馈,提高了用户体验。这种技术主要依赖于Ajax(Asynchronous JavaScript and XML)和PHP...
第一个是用来无刷新加载一段HTML第二个是把表单数据转换成一串请求字符串第三个是结合函数一和函数二的无刷新提交表单实现。 还有一点要提到的是,无刷新表单提交,还不能对文件上传进行处理,这个主要是因为浏览器...
### ASP.NET中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...
在传统的网页交互中,用户提交表单时通常会触发整个页面的刷新,这可能导致用户丢失当前浏览状态,而无刷新提交则避免了这个问题。 jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果以及...
在当今的互联网应用开发中,实现无刷新提交表单是一种常见的需求,传统上,我们通常会利用Ajax技术来达到这样的效果。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分...
PHP实现服务器之间的数据传送(无刷新表单提交)
使用AJAX提交表单数据的好处是,可以避免页面刷新,并且可以自定义提交完成后的响应处理逻辑。在AJAX请求完成后,可以根据服务器返回的数据进行相应的页面更新,或者显示提交成功的提示。 为了进一步增强用户体验,...
在网页开发中,异步无刷新提交是一种提升用户体验的重要技术,它使得用户在提交表单或执行某些操作时,无需等待整个页面刷新,而是仅更新部分网页内容。本主题聚焦于利用`iframe`来实现这一功能,这在不支持现代Ajax...
通过上述方式,你可以利用ASP.NET MVC的Ajax.BeginForm实现无刷新提交表单,提升用户交互体验。在提供的压缩包文件中,MVC5测试.sln可能是解决方案文件,.vs是Visual Studio的项目文件夹,而MVC5测试可能包含具体的...
在表单验证中,JavaScript可以用于验证基本的输入格式,如电子邮件地址、电话号码、日期等,确保用户在提交表单之前输入的信息是正确的。 Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它...