在实际的项目制作过程中,经常要采用ajax方式来进行,当然,这就免不了要进行数据交换。如果采用拼接字符串的方式来进行,不仅拼接的时候麻烦,而且在拆解的时候更加麻烦,一旦遇到特殊字符,那么就是灾难了。因此,现在目前流行的都是使用xml或者是json方式来进行。
下面来说明利用xml方式来进行数据传输的方式,首先看后台数据的形成:
private
void
GetInfo(
string
eventArgument)
{
string _splitVal = eventArgument.Split( ' | ' )[ 0 ];
if (_splitVal.Equals( " getInfo " ))
{
string sql = @" SELECT a.gg_bt,b.lx_dm,a.gg_nr
FROM DB_ZGFZ.T_NSFW_GGGL_ZB A
LEFT JOIN DB_ZGFZ.T_NSFW_GGGL_DM_GGLX B
ON A.GG_LXDM = B.LX_DM
WHERE a.gg_id=' " + eventArgument.Split( ' | ' )[ 1 ] + " ' " ;
DataTable dt = this .m_CommonBLL.ADONETHelper.GetDataTableBySQL(CommandType.Text, sql);
if (dt != null )
{
if (dt.Rows.Count > 0 )
{
DataSet ds = new DataSet();
ds.Tables.Add(dt);
_str = ds.GetXml();
}
}
}
}
{
string _splitVal = eventArgument.Split( ' | ' )[ 0 ];
if (_splitVal.Equals( " getInfo " ))
{
string sql = @" SELECT a.gg_bt,b.lx_dm,a.gg_nr
FROM DB_ZGFZ.T_NSFW_GGGL_ZB A
LEFT JOIN DB_ZGFZ.T_NSFW_GGGL_DM_GGLX B
ON A.GG_LXDM = B.LX_DM
WHERE a.gg_id=' " + eventArgument.Split( ' | ' )[ 1 ] + " ' " ;
DataTable dt = this .m_CommonBLL.ADONETHelper.GetDataTableBySQL(CommandType.Text, sql);
if (dt != null )
{
if (dt.Rows.Count > 0 )
{
DataSet ds = new DataSet();
ds.Tables.Add(dt);
_str = ds.GetXml();
}
}
}
}
当然,这段代码就是利用了DataSet的GetXml()方式来进行,产生的XML数据结构如下:
<
NewDataSet
>
< Table1 >
< GG_BT > 供货价格将会 <> asdasd </ GG_BT >
< LX_DM > 2 </ LX_DM >
< GG_NR > sdfsdf </ GG_NR >
</ Table1 >
</ NewDataSet >
< Table1 >
< GG_BT > 供货价格将会 <> asdasd </ GG_BT >
< LX_DM > 2 </ LX_DM >
< GG_NR > sdfsdf </ GG_NR >
</ Table1 >
</ NewDataSet >
可以发现,本xml中的NewDataSet和Table1都为系统自动生成,而GG_BT,LX_DM,GG_NR均为数据库中的字段,并且,该方法生成的xml已经自动的将特殊字符"<>"转义成了"<>",那么这段xml数据如何在前台进行解析呢?
前台解析代码如下:
var
xmlDoc
=
new
ActiveXObject(
"
MSXML2.DOMDocument
"
);
xmlDoc.loadXML(arg);
var gg_bt = xmlDoc.selectNodes( " NewDataSet/Table1/GG_BT " )[ 0 ].text;
var gg_type = xmlDoc.selectNodes( " NewDataSet/Table1/LX_DM " )[ 0 ].text;
var gg_nr = xmlDoc.selectNodes( " NewDataSet/Table1/GG_NR " )[ 0 ].text;
$( " #txtTitle " ).val(gg_bt);
$( " #ddlType option[value=' " + gg_type + ' ' + " '] " ).attr( " selected " , true );
$( " #txtNR " ).val(gg_nr);
xmlDoc.loadXML(arg);
var gg_bt = xmlDoc.selectNodes( " NewDataSet/Table1/GG_BT " )[ 0 ].text;
var gg_type = xmlDoc.selectNodes( " NewDataSet/Table1/LX_DM " )[ 0 ].text;
var gg_nr = xmlDoc.selectNodes( " NewDataSet/Table1/GG_NR " )[ 0 ].text;
$( " #txtTitle " ).val(gg_bt);
$( " #ddlType option[value=' " + gg_type + ' ' + " '] " ).attr( " selected " , true );
$( " #txtNR " ).val(gg_nr);
上面代码中的黄色标注部分就是解析xml的核心方法,这样一来,不仅解决了数据传输的前后台交互问题,而且还避免了特殊字符的存在,真的是很方便。