1. 程式人生 > >Ajax請求回撥函式沒有被呼叫

Ajax請求回撥函式沒有被呼叫

    $.ajax({
        type:"post",
        url:"http://172.16.41.91:8080/FcsServletSSM/users/register",
        data:$('#user_resigter').serialize(),
        dataType:"json",
        async:false,   //false為同步,true為非同步
        success:function(data) {
            alert(data.type);
            console.log(data.id);
        }
    });

async: false,(預設是true);

如上:false為同步,這個Ajax請求將整個瀏覽器鎖死,
只有url請求中後臺的方法執行結束後,才可以執行其它操作。

當async: true 時,ajax請求是非同步的。但是其中有個問題:ajax請求和其後面的操作是非同步執行的,那麼當後臺方法還未執行完,就可能已經執行了 ajax請求後面的操作
然而,data這個資料是在ajax請求success後才賦值的,結果,輸出時會為空。
所以導致一種回撥函式沒有被呼叫的假象。

比如:後臺要做一些耗時的操作就會導致這種情況。

解決方法:通過設定 async:false 把 ajax 請求方法改成同步。

關注公眾號,分享乾貨,討論技術


相關推薦

Ajax請求函式沒有呼叫

    $.ajax({        type:"post",        url:"http://172.16.41.91:8080/FcsServletSSM/users/register", 

關於ajax進行跨域請求 函式命名的一些問題

通常我們在使用ajax進行 JSONP跨域請求時,不會對回撥函式名稱做限制 ,而是採用系統隨機的命名,類似於jQuery3215844等豁免隨機的產生一些數字,這種方式帶來的一個問題就是每次都會發出一個新的請求連結,對於一些實時性不是很敏感的介面來說,可能只需要

Uncaught ReferenceError: jp2 is not defined,用jsonp抓取qq音樂總是說函式沒有定義

問題如下參考連結:https://segmentfault.com/q/1010000010051040 用jsonp抓取qq音樂總是說回撥函式沒有定義, 我的要實現時候的步驟 1。第一步 我要實現的目的 問題:如題 我的部分程式碼: import originJSON

vue中使用函式,this呼叫無效

let self = this //使用新變數替換this,以免this無效//updateStudentInfoToServer是一個將本身部分資料非同步上傳的介面,this.updateStudentInfoToServer(data,   function(res){ 

ajax函式(done,fail,always)

直接上程式碼 <!DOCTYPE html> <html> <head>     <meta charset="utf-8"><title>ajax</title><script type="te

Ajax非同步函式(callback)

ajax請求確實是非同步的,不過這請求是由瀏覽器新開一個執行緒請求,當請求的狀態變更時,如果先前已設定回撥,這非同步執行緒就產生狀態變更事件放到 JavaScript引擎的處理佇列中等待處理。見:htt

jquery的ajax success函式不執行

     弄了好長時間,執行ajax請求的介面一直返回404,請求壓根就沒有傳到後臺,除錯了半天,原因找到了ajax請求裡面的引數一定得跟java後臺裡面的請求引數保持一致才行; data.productName = productname;

AJAX使用函式

<!DOCTYPE html> <html> <head> <script> var xmlhttp; function loadXMLDoc(url,cfunc) { if (window.XMLHttpRequest)  

WebService、Ajax函式(一)

       本例項演示藉助WebService、Ajax技術和回撥函式,從MSSQL資料庫中獲取所需資料,並用JavaScript語言將資料結果顯示到網頁地圖上。 1、WebService        (1)在工具箱的Ajax Extentions下面找到ScriptM

ajax非同步函式中給外部變數賦值的問題

<!doctype html> <head> <meta charset="utf-8"> </head> <body> <script src="http://localhost/UIBMSPHPProj

AJAX函式

AJAX = Asynchronous JavaScript and XML(非同步的 JavaScript 和 XML)。 通過 AJAX,JavaScript 無需等待伺服器的響應,而是: 在等待伺服器響應時執行其他指令碼當響應就緒後對響應進行處理 AJAX - 建

函式中如何呼叫類中的非靜態成員變數或非靜態成員函式

【問題1】如何在類中封裝回調函式? 【答】:   a.回撥函式只能是全域性的或是靜態的。   b.全域性函式會破壞類的封裝性,故不予採用。   c.靜態函式只能訪問類的靜態成員,不能訪問類中非靜態成員。    【問題2】如何讓靜態函式訪問類的非靜態成員?     【解決方案】:     宣告一靜態函式a()

Ajax函式(callback)

Ajax中的回撥函式(利用PHP+JS實現) 很多和我一樣的初學者,總是搞不懂什麼是回撥函式。我經過了幾天的學習將自己的理解記錄在這裡。 一、為什麼使用回撥函式? 首先我們應該明白我們為什麼要用回撥函式?我們用它能夠解決什麼樣的問題。下邊看一個例子。 (1)在以上函式d

用谷歌的AsyncHttpClient簡單模仿安卓的AsyncHttpClient,實現非同步請求函式返回值

實現思路 既然要呼叫Future.get() 才能激發訪問,那麼就想到了使用一個執行緒去訪問。我們就不需要等待阻塞了。 模仿安卓的AsyncHttpClient回撥。根據狀態回撥不同的函式。 實現的效果 執行程式碼...

ajax函式中巢狀ajax

問題 專案需要在第一個請求執行成功取得一些引數後,立即執行第二個請求,而直接巢狀沒有達到想要的的效果 解決 ajax中有一個async引數(非同步屬性),預設為true。故將其設定為false即可

SpringMVC在處理Ajax請求後返回void導致前臺Ajax函式不執行

問題簡述 在一次SpringMVC專案中,前臺通過Ajax請求,準備修改資料庫中的資料。因為Ajax請求只是讓後臺更改資料,所以Controller方法根本不需要返回給前臺任何資料,所以我們將Controller的方法的返回值設定為void。但令我困擾的是,前端頁面本應該執行的回撥函式一直不

Qt 學習之路 2(19):事件的接受與忽略(當重寫事件回撥函式時,時刻注意是否需要通過呼叫父類的同名函式來確保原有實現仍能進行!有好幾個例子。為什麼要這麼做?而不是自己去手動呼叫這兩個函式呢?因為我們無法確認父類中的這個處理函式沒有額外的操作)

版本: 2012-09-29 2013-04-23 更新有關accept()和ignore()函式的相關內容。 2013-12-02 增加有關accept()和ignore()函式的示例。 上一章我們介紹了有關事件的相關內容。我們曾經提到,事件可以依情況接受和忽略。現在,我們就

關於jquery ajax請求發了,返回值也有,但是卻無法進去ajax的success函式

        這幾天在除錯專案中發現了jquery ajax出現了,請求發了,用chorme的network 發現請求也成功了,最後發現沒有進入ajax的success回撥函式,這個問題經我除錯發現

關於ajax請求返回json資料不進入函式的可能情況

最近做一個專案,一般都是用json資料先模擬後端返回資料,結果昨天正常傳送一個get請求後,json資料請求正常,但是一直都沒法進入success回撥執行後續方法,搗鼓了很久,才發現get請求返回的json資料格式有問題,由於是自己模擬json資料,粗心導致少了一個標點符號

jquery ajax請求成功,返回了資料,但是不進success函式的問題

來自http://www.myexception.cn/ajax/413061.html --------------------------拷貝內容 start -------------------