C#页面间拼接方式数据传递-含特殊字符(记录篇)

本文介绍了在JavaScript中用于URL编码的`encodeURI()`和`encodeURIComponent()`函数,详细阐述了它们的区别和使用场景。通过示例展示了如何在C#页面间通过编码特殊字符来传递数据,以及在接收端如何解码并使用`decodeURIComponent()`来获取原始信息。此外,还提及了通过Ajax将编码后的参数传递给后台,并进行数据库查询的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先了解一下js两个常用编码函数

1、encodeURI()

它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号“; / ? : @ & = + $ , #”,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

它对应的解码函数是decodeURI()。

需要注意的是,它不对单引号'编码。

2、encodeURIComponent()

最后一个Javascript编码函数是encodeURIComponent()。与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。

因此,“; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。

它对应的解码函数是decodeURIComponent()。

encodeURIComponent()相比encodeURI()要更加彻底。

例子:有个参数dName的值含特殊字符  ---- 测试(1#、2#、3#、F区域)

用js在div上添加一个链接

var htmlString = '<a href="testPage.aspx?dName='+encodeURIComponent(obj[i].deptName)+'" class="item-link"></a>';

$("#div").html(htmlString);

然后点击链接,跳转到下一个aspx页面,获取该参数

$(function(){
  var dName = decodeURIComponent(GetQueryString("dName"));

  console.log("dName="+dName);

 queryData(dName);

});

接着通过Ajax将该参数传入后台查询数据库信息

function queryData(dName){

$.ajax({
       url:"function.ashx?fun=beginCheck&dName="+encodeURIComponent(dName),
       type: "POST",
       dataType: 'text',
       success: function (response) { 
           var obj=eval('('+response+')');
           //拿到返回数据展示
       }
   });

}

接收参数查询数据库

string dName = HttpUtility.UrlDecode(Request["dName"].ToString());
string dList = "";
            DataTable dt1 = new DataTable();
            SqlDataAdapter sda = new SqlDataAdapter("SELECT top 10 * FROM T_ORG_DNAME WHERE F_DNAME LIKE '%" + dName + "%'", conn);
            sda.Fill(dt1);
            dList = JsonConvert.SerializeObject(dt1, new DataTableConverter());  //结果直接转json
            string res = "{'state':'100','data':" + dList + "}";
            sda.Dispose();

            if (conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); }
            Response.Write(res); Response.End();

关于如何用ashx访问数据库看文章https://blog.youkuaiyun.com/nzzl54/article/details/85052908,如果已经掌握数据库配置就不用看了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值