第一步:在js中新建一个如下方法
function ajaxSend(strUrl,xmlDoc){
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open("POST", strUrl, false);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.send("mydom="+encodeURI(encodeURI(xmlDoc.xml)));
return xmlhttp.responseXML;
}
注意:1、setRequestHeader一行一定要加载send方法调用之前;
2、在调用send方法一行,如果调用encodeURI一次传给后台的是乱码,那么就调用两次;
第二步:在js中调用上面定义的方法,如下:
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument");
xmlDoc.async = false;
var url="../../setDomServlet.do";
var xmlNode=ajaxSend(url, xmlDoc);
这样前台就完成了,接下来是java接收dom
第三步:编写一个servlet类,用来接收dom,在servlet中首先如下引入一个类,import java.net.URLDecoder;然后利用URLDecoder.decode方法如下代码:
System.err.println("dd "+URLDecoder.decode(request.getParameter("mydom"),"utf-8"));
调用该方法后会的到dom的字符串,我们需要把该字符串转换成Document类型的对象,该方法可以自行完成
这样就完成了ajax传递dom到java后台的任务了。