用$.ajax用POST方式提交请求到一个ASPX页面执行后台代码时,发生一桩诡异的事情。。。
假设后台代码写在Test.aspx及Test.aspx.cs中。如用:
$.ajax({ url:"Test.aspx", type:"POST", data:{ parameter:value },success:function(response){ //Call back function } });
通过Console控制台可以看到,在运行success的Callback时,会一下子执行两个请求。先是“POST”,后是“GET”。第一个“POST”,通过data正常传送了参数,但是返回信息有错。第二次“GET”,则既无传参,也无返回。
这个问题直接导致了后台.NET无法获取到参数并返回正确的值。
解决的方式很奇特,只要将url中的Test.aspx改为test.aspx,或者将Ajax的type改为"GET"就可以正常运行。即:
$.ajax({ url:"test.aspx", type:"POST", data:{ parameter:value },success:function(response){ //Call back function } });
这算是个JS或者.Net的BUG么?
把上面这句话删掉。实在没想到初来乍到,为学习求知积累的目的写下博文,随口一句问句被解读成了“装B的2货”。
看到后面几条评论才品味出@BruceL 话语里浓浓的讽刺。
谢谢@KindFace 的提示。我试着加了dataType,并改了一些参数名字,文件名有大小写时依旧有错。有可能是我dataType写的不对,我并没有一个个试过来,因为这是个从前辈手上刚接手的一个成熟已上线的项目,代码结构比较复杂也不好改。东西也交给别人去测试了,我也没有本地环境继续尝试。。。慢点搭一个比较干净的代码环境测试。
@孤月狼 我确定这样改了以后一切运行正常,IE7/8/9/Firefox/Chrome都测试成功。