PHP自然不在话下,如今要用ASP.NET,折腾了一大通,终于好了,记录一下。
首先,使用了AjaxPro,这玩意果然强大,直接调用了C#中的函数,正用着,发现jQuery不行了,网上搜了一大通,终究没法解决,决定看看能否放弃它。
当然,也只能从网上搜索了。
先找到了个简单了,欣喜若狂。且看为何:
1、jQuery使用与用PHP时一样,丝毫代码不动。
2、在C#代码中只要在Page_Load函数中加入以下代码:
if (!this.IsPostBack)
{ //未能解决汉字的乱码问题
if ((Request.QueryString["ac"] ?? "") == "ac1")
{
string strSql = "select * from DJ1 where F1='DJ'";
DataRowCollection rows = DbHelperSQL.Query(strSql).Tables[0].Rows;
string R = "[";
for (int i = 0; i < rows.Count; i++)
{
if (i > 0) R += ",";
R += "{ID:" + rows[i]["ID"].ToString()
+ ",K1:'" + rows[i]["K1"].ToString() + "'"
+ ",V:'" + rows[i]["V"].ToString() + "'"
+ "}";
}
R += "]";
Response.Write(R);
Response.End();
return;
}
else if ((Request.QueryString["ac"] ?? "") == "ac2")
{
string s1 = Request.Form["K1"];
string s2 = Request.Form["V"];
string sql = "INSERT INTO DJ1 (ID, F1, K1, V) VALUES ("
+ "DJ_ID.nextval,"
+ "'DJ',"
+ "'" + code(Request.Form["K1"]) + "',"
+ "'" + code(Request.Form["V"]) + "')";
int n = DbHelperSQL.ExecuteSql(sql);
if (n == 1)
{
sql = "SELECT DJ_ID.nextval from dual";
string sid = DbHelperSQL.Query(sql).Tables[0].Rows[0][0].ToString();
Response.Write("{result:1,ID:'" + sid + "'}");
Response.End();
return;
}
else
{
Response.Write("{result:0,error:'添加一条数据失败'}");
Response.End();
return;
}
}
}
这样,数据库操作成功!
但是,试一下中文,出现了乱码。
网搜路漫漫,耐何无果。解决到最好是出现偶数个汉字可以解码,单数个汉字就...
当然,最后是找到了解决问题的办法了,直接上代码:
1、web.config中添加:
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
2、JS代码:
$.ajax({
type: "Post",
url: mypage.aspx/func_ac2,
data: "{'K1':'我是','V':'XXX'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
},
error: function (err) {
alert(err);
}
});
3、C#代码:
[WebMethod]
public static string[][] func_ac1()
{
string strSql = "select * from DJ1 where F1='DJ'";
DataRowCollection rows = DbHelperSQL.Query(strSql).Tables[0].Rows;
string[][] R =new string[rows.Count][];
for (int i = 0; i < rows.Count; i++)
{
R[i]=new string[]{
rows[i]["ID"].ToString(),
rows[i]["K1"].ToString() ,
rows[i]["V"].ToString()};
}
return R;
}
[WebMethod]
public static string[] func_ac2(string K1, string V)
{
string sql = "INSERT INTO DJ1 (ID, F1, K1, V) VALUES ("
+ "DJ_ID.nextval,"
+ "'分类',"
+ "'" + K1 + "',"
+ "'" + V + "')";
int n = DbHelperSQL.ExecuteSql(sql);
if (n == 1)
{
sql = "SELECT ID.nextval from dual";
string sid = DbHelperSQL.Query(sql).Tables[0].Rows[0][0].ToString();
return new string[]{"1",sid};
}
else
{
return new string[] { "0", "添加一条数据失败" };
}
}
这样,保存到数据成功,不存在中文乱码问题。