今天需要用到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>