1. 程式人生 > >用jquery的ajax方法獲取不到return返回值

用jquery的ajax方法獲取不到return返回值

又遇到這個問題了,還好及時發現了。之前也遇見過這個問題,困惑了很久。

這次有經驗了,一下就發現了存在的問題,自此記錄一下,下次不在犯了。

轉自:https://www.cnblogs.com/terryMe/p/6130309.html

小哥哥描述得很清楚:

如果jquery中,獲取不到ajax返回值。

兩個錯誤寫法會導致這種情況:1.ajax未用同步  2.在ajax方法中直接return返回值。

下面列舉了三種寫法,如果想成功獲取到返回值,參考第三種寫法:

/**
 * 方式:(1)同步呼叫 (2)在ajax函式中return值
 * 結果:返回 1。未成功獲取返回值
 * 失敗原因:ajax內部是一個或多個定義的函式,ajax中return返回值,
 * 返回到ajax定義函式,而不是返回到ajax外層的函式checkAccount1()
 */
function checkAccount1(){
    var result = 1;
    $.ajax({
        url : 'test.do',
        type : "post",
        data : {},
        async : false,
        success : function(data) {
            return 2;
        }
    });
    return result;
}

/**
 * (1)非同步呼叫 (2)在ajax對全域性變數進行設值 (3)ajax函式外將變數return
 * 結果:返回 1。未成功獲取返回值
 * 失敗原因:ajax請求和後面的return result語句非同步執行,
 * 導致return result比result = 2先執行並返回result的值
 */
function checkAccount2(){
    var result = 1;
    $.ajax({
        url : 'test.do',
        type : "post",
        data : {},
        async : true,
        success : function(data) {
            result = 2;
        }
    });
    return result;
}

/**
 * (1)同步呼叫 (2)且在ajax對全域性變數進行設值 (3)ajax函式外將變數return
 * 結果:返回 2。成功獲取返回值
 * 成功原因:先執行result = 2;再往下執行return result;
 */
function checkAccount3(){
    var result = 1;
    $.ajax({
        url : 'test.do',
        type : "post",
        data : {},
        async : false,
        success : function(data) {
            result = 2;
        }
    });
    return result;
}


相關推薦

【HTML】ajax方法獲取return返回

兩個錯誤寫法會導致這種情況:A、ajax未用同步;B、在ajax方法中直接return返回值。下面列舉了三種寫法,如果想成功獲取到返回值,參考第三種寫法:方法一:未獲得返回值/** * 方式:(1)同步呼叫 (2)在ajax函式中return值 * 結果:返回 1----

遞歸方法無法使用 return 返回

遞歸 return背景計算樹級結構數據,終極節點。使用遞歸計算,獲得3級子菜單問題無法獲取子節點分析監控遞歸,是正確的。已經識別出需要的子菜單解決方法外聲明變量,結果賦值到外圍變量,即可正常使用原因使用return無法將結果帶出遞歸總結遞歸,請拒絕reurn拿值。遞歸方法無法使用 return 返回值

extjs使用AJAX呼叫方法結束返回問題解決

   ExtJS中通過Ext.Ajax.request請求想返回值,可是總獲取不到,只有一種情況使用debugger才行,後來通過網上說Ext.Ajax.request預設是非同步的改成同步的就OK了,需要加async:false屬性,測試發現還是行不通;又使用全域性變數

jquery的ajax方法獲取return返回

又遇到這個問題了,還好及時發現了。之前也遇見過這個問題,困惑了很久。 這次有經驗了,一下就發現了存在的問題,自此記錄一下,下次不在犯了。 轉自:https://www.cnblogs.com/terryMe/p/6130309.html 小哥哥描述得很清楚: 如果jqu

jquery的ajax方法獲取return返回的正確姿勢

如果jquery中,想要獲取ajax的return返回值,必須注意兩方面,ajax的同步非同步問題,在ajax方法裡面還是外面進行return返回值。下面列舉了三種寫法,如果想成功獲取到返回值,參考第三種寫法:(即,前面兩種是反面教材)/** * 方式:(1)同步呼叫 (

函式內部的 $.ajax() 獲取到 ajax 的 return 返回

/*常見錯誤示例 直接在 ajax 裡面return 結果 */ function demo(){ $.ajax({ url : 'test.do', type : "post", data : {},

css設定height:100%,js獲取到高度問題

工作中用到的amaze ui的popup中的heigh:100%;在專案中我需要獲取大屏popup的高的具體的畫素值,然而我要說的是,總共有兩點:一、用純js獲取obj.style.height、obg.innerHeight和obj.offsetHeight獲取,    c

jQuery中的data方法只能獲取能設定

data([key],[value]) 在元素上存放或讀取資料,返回jQuery物件 上面是在jQuery手冊中的擷取,“存放”資料? 先看程式碼 <div id="div1" data-test="test">1</div&

java再複習——通過反射獲取方法的引數和返回的泛型型別

我們都知道了可以定義帶有泛型引數的方法,以及泛型返回值的方法了,那麼泛型在執行的時候已經被擦除了,我們該如何知道這個泛型到底是什麼呢?有很多情況需要知道實際泛型是什麼,Android資料庫框架以及Http框架在解析成json成實體類的時候,必然要知道是哪個類。 獲取引數的泛

SpringMVC-方法四種類型返回總結,你過幾種?

java 真的 alibaba 留言 ica rect utf etc redirect SpringMVC 現在算是 Java 領域的一個基礎性框架了,很多人天天用,可是對於 SpringMVC 方法的返回值,你又是否完全清楚呢?今天松哥就來和大家聊一聊 SpringMV

字節碼分析finally塊對return返回的影響

存儲 row 經驗 臨時 his 也不會 路徑 操作數 方法的參數 直接進入主題。看如下代碼: public int test(){ int i=0; try { i=1; return i; } catch (Exc

ajax請求後臺,有時收返回的解決辦法

無法 傳輸 返回值 文件 新建 spa 所有 是我 chan 昨天下午做項目遇到一個問題,貼出來方便以後翻閱,也給大家個參考。 問題: 具體做的是個文件導入的功能,導入的功能是成功了,但是界面一直得不到返回值,排查了一下午,調試的時候是可以有返回的,但是關掉瀏覽器調試界面,

query 方法 獲得xml 節點的

點數據 fun query response code ring select comment received DECLARE @result xml SET @result=‘<s:Envelope xmlns:s="http://schema

Android平臺調Web Service:線程返回

繼承 write 能夠 call() ted uil code 等待 @override 接上文 前文中的遺留問題 對於Java多線程的理解。我曾經只局限於實現Runnable接口或者繼承Thread類,然後重寫run()方法,最後start()調用就算完事。可

node進階| 解決表單enctype="multipart/form-data" 時獲取到Input的問題

分割字符串 odi logs -1 字符串 var dex 路徑 date() 今天在學習node踩到一個坑:form設置enctype="multipart/form-data"上傳文件時,無法獲取到表單其他input的值。 因為之前上傳文件用的是 formidable

方法的重寫與重載的區別(Override與Overload)。重載的方法是否可以改變返回的類型

改變 父類 div 之間 如果 如同 java 調用 ava 方法的重寫(Override)與重載(Overload)的區別。重載的方法是否可以改變返回值的類型?【基礎】 解釋: 方法的重寫overriding和重載Overloading是Java多態性的不同表現。 1、重

ajax異步傳輸數據,return返回為空

fin 問題 type UNC html ces ++ AR http 今天在項目中遇到了一個問題,就是在定義了一個函數drawHtml(),本意是想在函數運行結束後,返回拼接的字符串,可是函數運行結束後始終返回的是undefined 有BIG的代碼: function

python中的return返回

return 之間 默認 ret 一行 定義 理解 -i 概念 return基本概念: 函數的返回值是函數重要的組成部分。函數的根本在於實現程序的部分功能,所以很多時候我們需要將函數執行後的結果返回給程序再由程序做出進一步的操作。可以說是函數的返回值令函數與函數之間,函

jmeter 一些測試方法定時補充】

目錄 1、獲取當前執行緒的名稱 ctx.getThread().getThreadName() 2、儲存變數到檔案中 3、儲存變數到全域性屬性/變數中 4、在beanshell中通過CookieManager新增cookie資訊 1、獲取當前執行緒的名稱 ctx.getThr

iOS block非同步實現return返回的方式

+ (NSString *)httpNet { dispatch_semaphore_t signal = dispatch_semaphore_create(1); __block NSString *objectID; // 模擬block非同步