今天需要用到ajax的get方法,封装到了自己自定义的function name,里面但是发现了一个问题,总是会自己自定义的方法里面的代码全部执行完成后才会去执行get,这样就导致了不同步,这样给我们程序员带了很大的不便,
没有使用同步代码时候的get
function name(){
ret = 'y';
$.get("xx.php", function(data){
ret = data;
});
return ret;
}
获取到的结果总是未y然后,之后才会获取get请求里面的东西,这样就造成了不同步,可以使用以下代码
设置ajax的同步全局变量
$.ajaxSetup({
async : false
});
这样就会同步了,但是我测试了一下,和我的部分代码有冲突,导致了cpu的饱满,或者可以换一种方法
$.ajax({
type : "get",
url : "url",
async : false, //开启同步
success : function(r){
//你们要执行的代码
}
});
例子
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JQuery</title>
<mce:script type="text/javascript" src="/script/jquery-1.4.2.js" mce_src="script/jquery-1.4.2.js"></mce:script>
<mce:script type="text/javascript"><!--
/**同步的Ajax请求,在一个方法体内,方法体内的函数依赖于Ajax的响应结果*/
function loadSomething()
{
var condition="";
$.ajax({
async:false;//使用同步的Ajax请求
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
condition=msg;
}
});
/**
*在这里处理condition
*如果使用的异步的话,或许Ajax请求没响应到客户端,却被Ajax下面的代码掉用
*所以有可能出问题
*/
}
// --></mce:script>
</head>
<body>
</body>
</html>