AJAX提交表单数据实例分析
本文实例讲述了AJAX提交表单数据的方法。分享给大家供大家参考。具体如下:
varTINY={}; TINY.ajax=function(){ return{ /** *@paramstringtype请求类型,post,get(目前只实现了这两种) *@paramstrngurl请求的地址 *@paramobjectdata当使用post请求时的请求参数,ex:data=>{name:'adam'} *@paramfunctioncallback成功返回时的回调函数 */ call:function(type,url,data,callback){ varxhr=window.XMLHttpRequest?newXMLHttpRequest:newActiveXObject('Microsoft.XMLHTTP');//forie xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ callback.call(this,xhr.responseText); } } switch(type.toUpperCase()){ case'POST': xhr.open('POST',url,true); //这句比较重要 xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); varformData=''; for(variindata){ formData+=i+'='+data[i]+'&'; } xhr.send(formData); break; default: xhr.open('GET',url,true); xhr.send(null) break; } } } }();
遍历表单各元素,将参数值组织成JSON格式
这里对CheckBox复选框做了特殊处理,后台接收到的该值为所有复选框值用逗号的拼接
functionserialForm(form){ vare=form.elements; varht=newArray(); varcheckbox=newArray(); for(vari=0;i<e.length;i++){ if(e[i].type=="checkbox"){ if(e[i].checked){ if(checkbox[e[i].name]!=null)checkbox[e[i].name].push(e[i].value); elsecheckbox[e[i].name]=[e[i].value]; } }else{ ht.push(e[i].name+":'"+e[i].value+"'"); ht.push(","); } } for(vardddincheckbox){ ht.push(ddd+":'"+checkbox[ddd]+"'"); ht.push(","); } ht.push("nt:0"); returneval('({'+ht.join("")+'})'); };
AJAX的调用:
TINY.ajax.call('post','listfrom.do',serialForm(frm),function(data){ varret=eval('('+data+')'); if(ret.errid==0){ alert(ret.text); window.location.reload(); } else{ alert(ret.text); } });
谈到服务器端返回的JSON格式数据,支持如下格式
Stringstr="[{\"mailAddr\":\"edison@163.com\"},{\"mailAddr\":\"jay@263.com\"}]"; response.setContentType("application/json;charset=UTF-8"); response.getWriter().write(str);
前端调用
functionshow(){ $.post("listmail.do",{"name":"John"},function(data){ for(vari=0;i<data.length;i++){ alert(data[i].mailAddr); } },"json"); }
希望本文所述对大家的Ajax程序设计有所帮助。