獲取$.post $.get回撥函式返回值問題
專案中用Jquery操作,肯定避免不了向伺服器傳送請求,所以就會用到上面的兩個函式。完整的函式格式如下:
?$.get(URL,callback);
?$.post(URL,data,callback);
而某些時候我們要用callback回撥函式處理完以後的返回值,常規的思路是定義一個全域性變數來接收返回值,然後在$post的外面,函式的裡面返回即可。例如,下面為一個js函式:
function testAsync(){ //定義一個全域性變數來接受$post的返回值 var result; //呼叫一般處理程式 $.post("handler/QueryCourseByFirst.ashx"
然後哪裡需要這個函式就直接呼叫即可,例如:
//呼叫函式 var res = testAsync();
看上去邏輯上貌似沒問題,但試過就知道這樣是存在問題的了,發現res通常取不到courseDT4。除錯就會發現函式的執行順序並不是順序執行的。那麼自然就想到了$.post發得請求為“非同步”請求,所以發出請求後還沒等一般處理程式處理返回結果,就執行了為res變數賦值,因此取到的值總為undefined。
經過查詢,可以發現
function testAsync(){ //定義一個全域性變數來接受$post的返回值 var result; //用ajax的“同步方式”呼叫一般處理程式 $.ajax({ url:"handler/QueryCourseByFirst.ashx", async:false,//改為同步方式 type:"POST", data:{Sqls
然後再直接呼叫函式就沒有問題了,如下:
//呼叫函式 var res = testAsync();