ajax+asp.net,无法获取post的数据。

linanir77 2015-04-16 12:09:46
客户端代码

<!DOCTYPE html>
<html>
<head>
<script src="Scripts/jquery-1.11.2.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.post("Default.aspx",
{
name:"Donald Duck",
city:"Duckburg"
},
function(data,status){
alert("数据:" + data + "\n状态:" + status);
});
});
});
</script>
</head>
<body>
<button>向页面发送 HTTP POST 请求,并获得返回的结果</button>
</body>
</html>

服务器端代码
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<%
Dim fname,city
fname=Request.Form("name")
city=Request.Form("city")
Response.Write("Dear " & fname & ". ")
Response.Write("Hope you live well in " & city & ".")
%>

这两段代码就是w3school里面的例子,但是服务器端是asp的,我复制过来服务器端的是aspx文件,只是改了post的url和script的src引用位置,代码能执行,能看到弹出对话框,对话框的内容是:data:dear .hope you live well in . status:success
从返回的内容可以知道,客户端能把数据传回后台aspx页面,也能收到aspx页面的data,但是aspx页面貌似接收不到post过去的数据。
谁知道这是怎么回事吗?软件时visual studio 2015 ,asp.net,后台是win8.1+iis express
...全文
601 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣心 2017-07-11
  • 打赏
  • 举报
回复
http://www.cnblogs.com/umlzhang/p/3654486.html 看这个你就明白了
talip1106 2016-05-13
  • 打赏
  • 举报
回复
我也遇到了这蛋疼的问题。通过form post过去的数据都获取不到。。。非常纳闷!
linanir77 2015-04-17
  • 打赏
  • 举报
回复
引用 15 楼 sp1234 的回复:
很早以前当asp.net开始流行的时候,我遇到一个老程序员,他听说.net是可以用notepad.exe编写然后用命令行编译的,于是就很任性地一定要那样去学习asp.net。结果呢?学了一年,还是整天问最低级的、别的程序员在最初几周就完全解决了的问题。这就因为他非要任性地“走偏门”而不是用好的ide工具。 如果你找一个正规的asp.net教程,再使用最靠谱的专业人员使用的最基本的开发平台(而不是业余爱好者都很少采用的最复杂最低级的工具),这样开始学习asp.net之类的就会顺利一些。
你说的很对,我一般都是看一些实例教程来学习的,很少系统的看相关的教程,所以有很多盲点。不过我本身也不是从事编程或者网页制作这方面工作的,没有去太系统的学这些内容。但是我用的软件是visual studio 2015,你引用的内容是我在软件和浏览器里都编译通过的,可以运行,当我的form标签使用get方法的时候,功能正常,但是我一旦使用post功能,就完全取不到数据,而且同样的代码,我如果用asp而不是asp.net,那么无论是post还是get,都是没问题的。另外我的后台语言是vb不是c或者c#,所以你说的操作符什么的问题可能是因为语言不同吧。我这两天也找了asp.net的教程来看了一下,目前还没发现我有哪里出错的。
  • 打赏
  • 举报
回复
很早以前当asp.net开始流行的时候,我遇到一个老程序员,他听说.net是可以用notepad.exe编写然后用命令行编译的,于是就很任性地一定要那样去学习asp.net。结果呢?学了一年,还是整天问最低级的、别的程序员在最初几周就完全解决了的问题。这就因为他非要任性地“走偏门”而不是用好的ide工具。 如果你找一个正规的asp.net教程,再使用最靠谱的专业人员使用的最基本的开发平台(而不是业余爱好者都很少采用的最复杂最低级的工具),这样开始学习asp.net之类的就会顺利一些。
  • 打赏
  • 举报
回复
引用 13 楼 linanir77 的回复:
[quote=引用 12 楼 sy401042879 的回复:] 你在vb文件里面获取一下试试。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script runat="server" > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label1.Text = "form:" & Request.Form("name") Label2.Text = "params:" & Request.Params("name") Label3.Text = "querystring:" & Request.QueryString("name") End Sub </script> </head> <body> <form id="form2" name="form1" runat="server" action="Default2.aspx" method="post"> <input id="name" type="text" name="name" /><br/><input id="submit" type="submit" value="确定" /><br/> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br/> <asp:Label ID="Label2" runat="server" Text="Labe2"></asp:Label><br/> <asp:Label ID="Label3" runat="server" Text="Labe3"></asp:Label><br/> </form> </body> </html> 改成这样了,还是不行,用get就可以,post就不行。太邪门了。是不是iis的问题或者我的文件少了什么?asp可没这么麻烦。[/quote] 虽然你知道需要将代码写到(貌似)方法过程中了,但是你的代码还是有一堆错误(例如操作符、例如莫名其妙的 MyBase类型),很难说它可能通过编译。真不知道你是怎么让它“跑”起来的?!
zhk383501372 2015-04-17
  • 打赏
  • 举报
回复
楼主用HTTP分析抓包看看,看下你post的数据和页面接收到的是什么。
linanir77 2015-04-17
  • 打赏
  • 举报
回复
引用 12 楼 sy401042879 的回复:
你在vb文件里面获取一下试试。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script runat="server" > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label1.Text = "form:" & Request.Form("name") Label2.Text = "params:" & Request.Params("name") Label3.Text = "querystring:" & Request.QueryString("name") End Sub </script> </head> <body> <form id="form2" name="form1" runat="server" action="Default2.aspx" method="post"> <input id="name" type="text" name="name" /><br/><input id="submit" type="submit" value="确定" /><br/> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br/> <asp:Label ID="Label2" runat="server" Text="Labe2"></asp:Label><br/> <asp:Label ID="Label3" runat="server" Text="Labe3"></asp:Label><br/> </form> </body> </html> 改成这样了,还是不行,用get就可以,post就不行。太邪门了。是不是iis的问题或者我的文件少了什么?asp可没这么麻烦。
sy401042879 2015-04-17
  • 打赏
  • 举报
回复
你在vb文件里面获取一下试试。
linanir77 2015-04-17
  • 打赏
  • 举报
回复
我现在连最简单的代码都提交不了: aspx文件内容如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <% Response.Write("form:" & Request.Form("name")) Response.Write("params:" & Request.Params("name")) Response.Write("querystring:" & Request.QueryString("name")) %> </head> <body> <form id="form1" name="form1" runat="server" action="Default.aspx" method="post"> <input id="name" type="text" name="name" /><br/><input id="submit" type="submit" value="确定" /> </form> </body> </html> 只要使用post方式就取不到值,但是用get方式,params和QueryString就能取到值,但是用post方式的时候,chrome浏览器的诊断工具中可以看到以下内容: __VIEWSTATE:/3imHm6nZt4OSe01E4EcJhmy81R08IkznTR9Svsmh6y6aIr0EjcK7Y7iTZ/GZbvniX8JxSMzcc4ysEYEHxdtUDkrS2xKa9GMah00oZDisKI= name:12 __VIEWSTATEGENERATOR:CA0B0334 中间有name的值,但是页面上就是取不到。跟ajax无关,跟jquery无关,这个代码里面只有asp.net了。
linanir77 2015-04-17
  • 打赏
  • 举报
回复
Remote Address:[::1]:7056 Request URL:http://localhost:7056/Default.aspx Request Method:POST Status Code:301 Moved Permanently Response Headers view source Content-Length:125 Date:Fri, 17 Apr 2015 07:13:26 GMT Location:/Default Server:Microsoft-IIS/10.0 X-Powered-By:ASP.NET X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcaXI3N1xEb2N1bWVudHNcVmlzdWFsIFN0dWRpbyAyMDE1XFdlYlNpdGVzXFdlYlNpdGUxXERlZmF1bHQuYXNweA==?= Request Headers view source Accept:*/* Accept-Encoding:gzip, deflate Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4 Connection:keep-alive Content-Length:26 Content-Type:application/x-www-form-urlencoded; charset=UTF-8 Cookie:ASPSESSIONIDACCCBTSQ=MNFHPPKDJLJDACJPBCPGMOJO; ASPSESSIONIDCCCCBTTR=NOBFGIFAOLFHCPNLHIGKEFLF Host:localhost:7056 Origin:http://localhost:7056 Referer:http://localhost:7056/htmlpage.html User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 X-Requested-With:XMLHttpRequest Form Data view source view URL encoded name:Donald city:Duckdburg 上面是chrome浏览器的诊断工具抓到的头文件,可以看到name和city,但是asp.net这边用request.form取不到数据。
linanir77 2015-04-16
  • 打赏
  • 举报
回复
是request.params(),也不行,response.write是正常的,可以写入内容,就是ruquest.form没有取到值。
bonnibell 2015-04-16
  • 打赏
  • 举报
回复
Request.Param[" "] 试试呢?
zujinsheng 2015-04-16
  • 打赏
  • 举报
回复
write 一个固定的字符先, 先不要write变量..
linanir77 2015-04-16
  • 打赏
  • 举报
回复
没人知道为什么吗?不是楼上说的问题,我用post、get都试过了。一样的代码,后缀是asp就没问题,如果后缀是aspx就没办法得到post的数据。
QQ234788028 2015-04-16
  • 打赏
  • 举报
回复
$.post注意,不要写get
linanir77 2015-04-16
  • 打赏
  • 举报
回复
又试了一下,发现如果把aspx页面换成asp页面,内容没有变化就是少了第一句,直接如下: <% Dim fname,city fname=Request.Form("name") city=Request.Form("city") Response.Write("Dear " & fname & ". ") Response.Write("Hope you live well in " & city & ".") %> 这样就一切正常了。实在不知道这是什么原因。
linanir77 2015-04-16
  • 打赏
  • 举报
回复
引用 1 楼 qq_19325985 的回复:
Response.Write("Dear " & fname & ". ")
Response.Write("Hope you live well in " & city & ".")
你确定你这里是& 不是+?
不是这个问题,我直接用Response.Write(fname)也不行。 另外,我用: $.get("Default.aspx?cit=beijing", { name:"Donald", city:"Duckburg" }, function(data,status){ alert("数据:" + data + "\n状态:" + status); }); 这样也是,能收到cit,但是name和city都没办法提交到,看来是{ name:"Donald", city:"Duckburg" },这里的问题了。
qq_19325985 2015-04-16
  • 打赏
  • 举报
回复
Response.Write("Dear " & fname & ". ")
Response.Write("Hope you live well in " & city & ".")
你确定你这里是& 不是+?

62,046

社区成员

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

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

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

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