Bug笔记:诡异的$.ajax

用$.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都测试成功。

posted @ 2012-10-31 13:36  Jennie Ji  阅读(1602)  评论(7编辑  收藏