今天在编写一个脚本函数,如下:
function ajaxQueryUnique(entityName,target,condition){
var result = null;
$.ajax(
{
url: contextPath+"/pms/weibo.action",
type:"post",
dataType:"json",
data:{
entityName:entityName,
target:target,
condition:condition,
"method:ajaxQueryUnique":"xx"
},
success:function(data) {
result = data.result;
}
}
);
return result;
}
调用函数:ajaxQueryUnique("User","count(*)","1=1"); XHR中有值传过来:{“result”:"90"},但是函数却没有返回,然后查找了jquery文档才发现ajax默认是异步传输的,ajax异步执行,无法预料返回的时间,所以不可能把主线程阻塞在这等待返回值(甚至可能通讯失败,一直等待直至超时),于是又了回调机制,主线程可以继续执行,页面也就不会死这儿,其实只要将其设置为同步就行了: async: false, 成功!!