asp.net中ajax的同步与异步调用的区别

时间是2013/12/03,一个客户说网站出现了问题。 问题是,在主页有一个用户注册功能,但是在IE浏览器下的返回值是正确的,而在360,谷
歌下面的返回值确实null,在火狐下面确实连提示信息都不弹出。
我找个一个问题,觉得有必要记录下来。 修改之前的源代码:
<script type="text/javascript">    
$(function () {      
   $("#btnsubmit").click(function () {            
       $.ajax({                
                     url: "WebIndex.aspx",                
                     type: "post",                
                     dataType: "json",                
                     data: { name: escape($("#txtname").val()), sex: escape($("#selsex").find(":selected").val()),                    
                                idcard: $("#zipidcard").val(), mobile: $("#txtmobile").val(), qq: $("#txtqq").val(),                    
                                cstype: $('input[name="fukuan"]:checked').val()                
                               },                
                    success: function (back)
                               {                    
                                   if (back == "1") {                        
                                           alert("注册成功!");                    
                                   }                    
                                 else {                        
                                           alert("注册失败!");                    
                                       }                
                                }
            })
        })
    });
</script>
修改之后的源代码:
<script type="text/javascript">    
$(function () {      
   $("#btnsubmit").click(function () {            
       $.ajax({                
                     url: "WebIndex.aspx",  
                     async: false,              
                     type: "post",                
                     dataType: "json",                
                     data: { name: escape($("#txtname").val()), sex: escape($("#selsex").find(":selected").val()),                    
                                idcard: $("#zipidcard").val(), mobile: $("#txtmobile").val(), qq: $("#txtqq").val(),                    
                                cstype: $('input[name="fukuan"]:checked').val()                
                               },                
                    success: function (back)
                               {                    
                                   if (back == "1") {                        
                                           alert("注册成功!");                    
                                   }                    
                                 else {                        
                                           alert("注册失败!");                    
                                       }                
                                }
            })
        })
    });
</script>
async: false,(默认是true); 如上:false为同步,
 当async: true 时,ajax请求是异步的。但是其中有个问题:文中的ajax请求和其后面的
操作是异步执行的,那么当后面的还未执行完,就可能已经执行了 ajax请求后面的操作。
建议:
1:遇到这类问题,先检查form与table的嵌套关系。
2:检查是否需要同异步。

posted on 2013-12-03 16:20  西湖雨  阅读(242)  评论(0)    收藏  举报

导航