jQuery通过ajax调用ASP.NET函数

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", "添加一条数据失败" };
        }
    }

这样,保存到数据成功,不存在中文乱码问题。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值