ajax+xml实现编辑预览功能
在项目中有一个功能需要做一个添加预览功能。我的思路是表单里的数据保存到xml文件中,打开预览页面用的是保存xml数据。
js端
var poststr = "";
//当前页面的ID元素集合
//此处也可用中的集合document.form来获取表单ID
var saveids = ["filed1","filed2"[...]];
//处理post数据格式
for (var i = 0; i < saveids.length; i++) {
obj = document.getElementById(saveids[i]);
if (obj.type == 'checkbox' || obj.type == 'radio') {
if (obj.checked) {
obj.value = 1;
} else {
obj.value = 0;
}
}
if (i == 0) {
poststr = obj.name + "=" + obj.value + "";
} else {
poststr = poststr + "&" + obj.name + "=" + obj.value + "";
}
}
//编辑器信息特特处理
var oEditor = FCKeditorAPI.GetInstance("fckFiled");
//encodeURIComponent主要是处理post数据时" "中&的转义
poststr = poststr + "&" + "Textintroduce= " + encodeURIComponent(oEditor.GetXHTML(true));
//ajax交由后台去处理
$.post(
"xxxx.ashx",
poststr
,
function (data) {
//成功
if (data == "1") {
window.open("xxx.aspx")
}
},
"text"
);
}
xxxx.ashx实现保存xml数据
第一次用 xmlDocument类,花了好少时间研究xml的操作。
/// <summary>
/// 根据集合生成xml文件
///</summary>
///<param name="fileName"></param>
///<param name="keys">Request.from接收到的键值集合</param>
///<returns></returns>
private bool WriteToXml(string fileName, string[] keys)
{
XmlDocument myDoc = new XmlDocument();
//申明xml段落
myDoc.AppendChild(myDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
//加入根元素
XmlElement goodsElem = myDoc.CreateElement("","Bookinfo","");
myDoc.AppendChild(goodsElem);
//添加子节点
// 遍历所有参数写入到xml结点
foreach (string k in keys)
{
string kk;
if(k!=String.Empty){
kk ="aa_"+k;
XmlElement ele = myDoc.CreateElement(kk);
XmlText text = myDoc.CreateTextNode(HttpContext.Current.Request.Form[k]);
ele.AppendChild(text);
goodsElem.AppendChild(ele);
}
}
//保存文件
try
{
myDoc.Save(fileName);
}
catch
{
return false;
}
return true;
}
读取xml实现代码
{
XmlDocument myDoc = new XmlDocument();
xmlfilename = Server.MapPath(xmlfilename);
Repeater re = new Repeater();
myDoc.Load(xmlfilename);
XmlNodeList nodes = myDoc.SelectSingleNode("Goods").ChildNodes ;
//ht 是HashTable类型,我觉得php的数据带键值的好用,所以选择了与其相似的类似 k/v 方式,再加上hashTable存储的是object类型,所以就直这用了
foreach (XmlNode node in nodes)
{
ht.Add(node.Name, node.InnerText);
}
}
在做读取过程中xmlNodeList,xmlNode,xmlElement等类一直没有搞的太清楚。
这段时间一直在检查项目中其他人员的开,除了阅读还是阅读,到了自己写就真不一样了,因项目需要,我刚转到asp.net c#开发3-4个月。
此方法加上监听就可以做后台发布的自动保存功能.