發(fā)布三個(gè)ajax相關(guān)的函數(shù),包括無刷新提交表單等
幾個(gè)月前,因?yàn)轫?xiàng)目需求,我寫了下面的三個(gè)ajax相關(guān)的函數(shù)。發(fā)布出來和大家分享。
第一個(gè)是用來無刷新加載一段HTML
第二個(gè)是把表單數(shù)據(jù)轉(zhuǎn)換成一串請(qǐng)求字符串
第三個(gè)是結(jié)合函數(shù)一和函數(shù)二的無刷新提交表單實(shí)現(xiàn)。
還有一點(diǎn)要提到的是,無刷新表單提交,還不能對(duì)文件上傳進(jìn)行處理,這個(gè)主要是因?yàn)闉g覽器的安全設(shè)置。目前無刷新的上傳,一般是用iframe來實(shí)現(xiàn)的。關(guān)于這個(gè),我們?cè)趃oogle里搜索能找到很多。
網(wǎng)上雖然已經(jīng)有很多優(yōu)秀的ajax的類和函數(shù)了,但是或許我這幾個(gè)函數(shù)對(duì)大家還有點(diǎn)用處,于是我就發(fā)布出來了。
可以在這里下載。
//@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)
}
相關(guān)文章
Ajax 配合node js multer 實(shí)現(xiàn)文件上傳功能
這篇文章主要介紹了Ajax 配合node js multer 實(shí)現(xiàn)文件上傳功能,需要的朋友可以參考下2017-08-08AJAX 用戶注冊(cè)時(shí)的應(yīng)用實(shí)例
我所舉的這個(gè)例子是一個(gè)企業(yè)用戶注冊(cè)時(shí)的一個(gè)應(yīng)用,當(dāng)用戶注冊(cè)時(shí)檢查用戶名和企業(yè)名是否可用,以前的做法是在旁邊加一個(gè)按鈕,點(diǎn)擊“檢查”,就向服務(wù)器發(fā)出請(qǐng)求,然后等待……服務(wù)器返回信息,繼續(xù)操作。2008-12-12ajax實(shí)現(xiàn)select三級(jí)聯(lián)動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了ajax動(dòng)態(tài)實(shí)現(xiàn)select三級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01ajax請(qǐng)求成功后新開窗口window.open()被攔截解決方法
ajax 異步請(qǐng)求成功后需要新開窗口打開 url,使用的是 window.open() 方法,但是很可惜被瀏覽器給攔截了,怎么解決這個(gè)問題呢2014-09-09簡單實(shí)體類和xml文件的相互轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄唵螌?shí)體類和xml文件的相互轉(zhuǎn)換方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能(java開發(fā))
這篇文章主要介紹了使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能(java開發(fā)),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01