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:检查是否需要同异步。
浙公网安备 33010602011771号