遇见一个很变态的ajax传参问题。

huaihuai 2012-07-31 10:17:22
采用js+ashx文件来做异步请求。其请求的url是:
http://localhost:9517/AjaxService/a0ef.ashx?type=87A4&name=mingz&weburl=http://www.baidu.com&phone=15000099555&cid=158&text=gfdsgds&mail=it@baidu.com



可是到了服务器后,后台接收参数发现url后面跟的参数变成了:
type=87A4&name=%u574f%u574f&weburl=http%3a%2f%2fwww.baidu.com&phone=15000099555&phone=15000099555&cid=158&text=gfdsgds&mail=it%40baidu.com&mail=it%40baidu.com&VisitorsTimeInfo=2012%25u5E747%25u670830%25u65E5%2520&author=%25u574F%25u574F&url=http%253A%2f%2fwww.baidu.com&url=%2fAjaxService%2fa0ef.ashx&ALL_HTTP=HTTP_CONNECTION%3akeep-alive%0d%0aHTTP_ACCEPT%3atext%2fhtml%2capplication%2fxhtml%2bxml%2capplication%2fxml%3bq%3d0.9%2c*%2f*%3bq%3d0.8%0d%0aHTTP_ACCEPT_CHARSET%3aGBK%2cutf-8%3bq%3d0.7%2c*%3bq%3d0.3%0d%0aHTTP_ACCEPT_ENCODING%3agzip%2cdeflate%2csdch%0d%0aHTTP_ACCEPT_LANGUAGE%3azh-CN%2czh%3bq%3d0.8%0d%0aHTTP_COOKIE%3aVisitorsTimeInfo%3d2012%25u5E747%25u670830%25u65E5%2520%3b+author%3d%25u574F%25u574F%3b+phone%3d15000099555%3b+mail%3dit%40baidu.com%3b+url%3dhttp%253A%2f%2fwww.baidu.com%0d%0aHTTP_HOST%3alocalhost%3a9517%0d%0aHTTP_USER_AGENT%3aMozilla%2f5.0+(Windows+NT+6.1)+AppleWebKit%2f536.11+(KHTML%2c+like+Gecko)+Chrome%2f20.0.1130.1+Safari%2f536.11%0d%0a&ALL_RAW=Connection%3a+keep-alive%0d%0aAccept%3a+text%2fhtml%2capplication%2fxhtml%2bxml%2capplication%2fxml%3bq%3d0.9%2c*%2f*%3bq%3d0.8%0d%0aAccept-Charset%3a+GBK%2cutf-8%3bq%3d0.7%2c*%3bq%3d0.3%0d%0aAccept-Encoding%3a+gzip%2cdeflate%2csdch%0d%0aAccept-Language%3a+zh-CN%2czh%3bq%3d0.8%0d%0aCookie%3a+VisitorsTimeInfo%3d2012%25u5E747%25u670830%25u65E5%2520%3b+author%3d%25u574F%25u574F%3b+phone%3d15000099555%3b+mail%3dit%40baidu.com%3b+url%3dhttp%253A%2f%2fwww.baidu.com%0d%0aHost%3a+localhost%3a9517%0d%0aUser-Agent%3a+Mozilla%2f5.0+(Windows+NT+6.1)+AppleWebKit%2f536.11+(KHTML%2c+like+Gecko)+Chrome%2f20.0.1130.1+Safari%2f536.11%0d%0a&APPL_MD_PATH=&APPL_PHYSICAL_PATH=E%3a%5c%u5de5%u4f5c%u65e5%u5fd7%5c%u535a%u5ba2%u5f00%u53d1%5chuaihuaiBLOG%5chuaihuaiBLOG%5c&AUTH_TYPE=NTLM&AUTH_USER=MVS%5cyibin&AUTH_PASSWORD=&LOGON_USER=MVS%5cyibin&REMOTE_USER=MVS%5cyibin&CERT_COOKIE=&CERT_FLAGS=&CERT_ISSUER=&CERT_KEYSIZE=&CERT_SECRETKEYSIZE=&CERT_SERIALNUMBER=&CERT_SERVER_ISSUER=&CERT_SERVER_SUBJECT=&CERT_SUBJECT=&CONTENT_LENGTH=0&CONTENT_TYPE=&GATEWAY_INTERFACE=&HTTPS=&HTTPS_KEYSIZE=&HTTPS_SECRETKEYSIZE=&HTTPS_SERVER_ISSUER=&HTTPS_SERVER_SUBJECT=&INSTANCE_ID=&INSTANCE_META_PATH=&LOCAL_ADDR=127.0.0.1&PATH_INFO=%2fAjaxService%2fa0ef.ashx&PATH_TRANSLATED=E%3a%5c%u5de5%u4f5c%u65e5%u5fd7%5c%u535a%u5ba2%u5f00%u53d1%5chuaihuaiBLOG%5chuaihuaiBLOG%5cAjaxService%5ca0ef.ashx&QUERY_STRING=type%3d87A4%26name%3d%25E5%259D%258F%25E5%259D%258F%26weburl%3dhttp%3a%2f%2fwww.baidu.com%26phone%3d15000099555%26cid%3d158%26text%3dgfdsgds%26mail%3dit%40baidu.com&REMOTE_ADDR=127.0.0.1&REMOTE_HOST=127.0.0.1&REMOTE_PORT=&REQUEST_METHOD=GET&SCRIPT_NAME=%2fAjaxService%2fa0ef.ashx&SERVER_NAME=localhost&SERVER_PORT=9517&SERVER_PORT_SECURE=0&SERVER_PROTOCOL=HTTP%2f1.1&SERVER_SOFTWARE=&HTTP_CONNECTION=keep-alive&HTTP_ACCEPT=text%2fhtml%2capplication%2fxhtml%2bxml%2capplication%2fxml%3bq%3d0.9%2c*%2f*%3bq%3d0.8&HTTP_ACCEPT_CHARSET=GBK%2cutf-8%3bq%3d0.7%2c*%3bq%3d0.3&HTTP_ACCEPT_ENCODING=gzip%2cdeflate%2csdch&HTTP_ACCEPT_LANGUAGE=zh-CN%2czh%3bq%3d0.8&HTTP_COOKIE=VisitorsTimeInfo%3d2012%25u5E747%25u670830%25u65E5%2520%3b+author%3d%25u574F%25u574F%3b+phone%3d15000099555%3b+mail%3dit%40baidu.com%3b+url%3dhttp%253A%2f%2fwww.baidu.com&HTTP_HOST=localhost%3a9517&HTTP_USER_AGENT=Mozilla%2f5.0+(Windows+NT+6.1)+AppleWebKit%2f536.11+(KHTML%2c+like+Gecko)+Chrome%2f20.0.1130.1+Safari%2f536.11}




弄了好几天了。实在是无法发现问题所在啊。删除了文件重新建也是这样,拿出以前做过的ajax对比也是一样,但没有问题。
求大牛救命呀。
...全文
217 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
你不觉得url后面多出来很多无用的内容,跟传数据有关系吗?
你要搞清楚后面的数据哪里添加进去的

作N年了,应该了解一些调试的方法了吧?
[/Quote]

- -|||
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

有两个phone??而且值都是一样的?那肯定就是传值的时候程序哪里出了问题了

解决办法如下:
(治标不治本的方法) 你反正只要一个phone,这两个又都是一样的,那你接收一个不就得了?或者把其中一个phone用正则替换掉
[/Quote]

对的。目前我采用的就是正则表达式。
yesterday5100 2012-07-31
  • 打赏
  • 举报
回复
有两个phone??而且值都是一样的?那肯定就是传值的时候程序哪里出了问题了

解决办法如下:
(治标不治本的方法) 你反正只要一个phone,这两个又都是一样的,那你接收一个不就得了?或者把其中一个phone用正则替换掉
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
你不觉得url后面多出来很多无用的内容,跟传数据有关系吗?
你要搞清楚后面的数据哪里添加进去的

作N年了,应该了解一些调试的方法了吧?

huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

你要搞清楚
post,get这2种方法都区别
[/Quote]

唉。工作N年了。还要你告诉我要知道post,get这2种方法都区别
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

换个传值方式,GET改成POST,加上对参数的编码
[/Quote]

我采用的是POST方式。
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
你要搞清楚
post,get这2种方法都区别
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

你传数据的时候出来问题,



这关数据库有什么问题啊。我接收参数的时候就看到url有问题了。- -|||
[/Quote]

数据都是传过去的,程序不会自己给你内容 的
你说关什么事?
天下在我心 2012-07-31
  • 打赏
  • 举报
回复
换个传值方式,GET改成POST,加上对参数的编码
qmz2007 2012-07-31
  • 打赏
  • 举报
回复
编码问题
手可摘星辰 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

加码,解码一下,试试



这个我知道啊。我要问的是参数为什么会出现重复的。具体参数我肯定知道要解码的

C# code
string mail = context.Server.HtmlDecode(context.Request.Params["mail"]);



问题所在比如:参数中出现两个phone
[/Quote]

不知道了,你具体看看别的代码吧,这个应该没问题
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你传数据的时候出来问题,
[/Quote]


这关数据库有什么问题啊。我接收参数的时候就看到url有问题了。- -|||
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
你传数据的时候出来问题,
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

System.Web.HttpUtility.UrlDecode();对你的url解码
[/Quote]

解码能解决有两个phone吗?
画龙添脚 2012-07-31
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlDecode();对你的url解码
huaihuai 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

加码,解码一下,试试
[/Quote]


这个我知道啊。我要问的是参数为什么会出现重复的。具体参数我肯定知道要解码的

string mail = context.Server.HtmlDecode(context.Request.Params["mail"]);



问题所在比如:参数中出现两个phone
手可摘星辰 2012-07-31
  • 打赏
  • 举报
回复
加码,解码一下,试试

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧