1. 程式人生 > >Ajax 內部 return false 不起作用的解決方法

Ajax 內部 return false 不起作用的解決方法

今天在寫Ajax的時候遇到一個問題,Ajax內部的 return false 不生效,並繼續執行後邊的程式碼。原始碼大概如下:

  $(function(){
          //Ajax呼叫處理
        $.ajax({
           type: "POST",//規定傳輸方式
           url: "categoryAction",/URL
           data: {'cid':$('#cid').val()},//引數
           success: function(data){
                   if('-1'==data){
                   return false; //此處return false不起作用
                   }
                   else{
                   return true;
                   }
              }
        });
        alert(123); //ajax中的判斷條件是否成立,都會執行這步
});

後面百度查找了一些資料,原因如下:
Ajax發起的是非同步請求,而JS函式中其他程式碼執行的是同步請求,這就造成了不管Ajax中的請求是否結束,都不會影響js函式中其他程式碼的執行,所以return false並不是沒有執行,而是隻在Ajax內部起作用,在Ajax請求之外就不起作用了,繼續執行其他程式碼。
所以解決方案如下:
1.將Ajax請求方式設定為同步(Ajax預設async:true)在js執行到Ajax程式碼時,會停止所有頁面載入,頁面呈現假死狀態,當Ajax中的程式碼執行完畢後,才會繼續執行其他程式碼。
2.使用全域性變數返回結果。
改進後的程式碼如下:

  $(function(){
              //Ajax呼叫處理
              var result =false;
              $.ajax({
               async:false,//同步載入
               type: "POST",//規定傳輸方式
               url: "categoryAction",/URL
               data: {'cid':$('#cid').val()},//引數
               success: function(data){
                       if('-1'==data){
                         result=false;
                       }
                       else{
                         result=true;
                       }
                  }
            });
            return result; // 返回結果為true時,後面的程式碼才會執行。
            alert(123);
    });

相關推薦

Ajax 內部 return false 作用解決方法

今天在寫Ajax的時候遇到一個問題,Ajax內部的 return false 不生效,並繼續執行後邊的程式碼。原始碼大概如下: $(function(){ //Ajax呼叫處理 $.ajax({ ty

Shiro unauthorizedUrl 作用解決方法

Shiro 通過註解方式判斷當前使用者沒有許可權時,跳轉不到指定的錯誤頁面,就是因為 unauthorizedUrl 不起作用,解決方法就是在 shiro 配置中加上下面這一段配置(異常全路徑做key,錯誤頁面做value) <bean class="org.springfram

Qt 佈局設定stretch,作用解決方法

addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) insertStretch(int index, int stretch = 0) setStretchFactor(

flex佈局下文字超出省略號代替作用解決方法

專案中發現,在flex佈局下,希望目標元素文字超出省略號時,text-overflow: ellipsis屬性無效,結論是設定文字超出省略號的元素,display屬性不能為flex!!! display屬性不能為flex!!!display屬性不能為flex!!!設定成blo

android:layout_marginRight 作用解決方法

今天想在RelativeLayout的左右分別放上一個按鈕, 左邊按鈕用marginLeft=”10dp”,空出了10dp的距離,沒問題. 但是右邊的按鈕marginRight=”10dp”就是過不去. 試了很久,最後在這個程式碼前加了一條android:

.Net Mvc validateRequest設定為false作用解決方案

再跟shp16一起搞CMS,框架計劃使用Mvc,昨天除錯的時候,總是報“從客戶端(content=”<P>This is a test</P…”)中檢測到有潛在危險的 Request.Form 值”根據下面的提示,說是將“validateRequest”設定為“false”就好了,可是無論

servlet3.0註解loadOnStartup作用解決方案

color fig 運行 exc back tar med -c spa   多次嘗試3.0在源碼中直接用註解配置loadOnStartup=1,即web應用啟動時創建servlet實例,發現不起作用,但是在web.xml配置則可以正常運行。先上源碼。 package l

iOS Git建立gitignore檔案, gitignore 作用解決辦法

1.建立gitignore檔案 開啟終端, cd 進入到專案所在目錄,輸入touch gitignore即可, 然後編輯 gitignore, 編輯成功之後, mv gitignore .gitignore換名字, 這個時候.gitignore檔案會自動消失, 點檔案不能顯示的. 在該資料夾下打

微信小程式設定height 100% 作用解決辦法

https://blog.csdn.net/wshpwangshiyu/article/details/79744884 問題:微信小程式設定背景圖片高度適應整個螢幕,設定height 100% 不起作用? .container-all{ width: 100%; he

Struts2中JSTL標籤作用解決辦法

1.設定某個jsp頁面使用el表示式,需要在jsp頁面加上(控制單個頁面) <%@ page isELIgnored="false"%>  //我設定了這點就可以了, 2.看你的web.xml檔案中頭的引用應該是 2.4.xsd <web-app id="WebApp_

手機端input[type=date]的時候placeholder作用解決方案

手機端input[type=date]的時候placeholder不起作用解決方案   目前PC端對input 的date型別支援不好,我試下來的結果是隻有chrome支援。firefox、IE11 都不支援。而且PC端有很多日曆控制元件可供使用。就不去多考慮這點了。 那麼在移動端

4.不要在ajaxreturn false會生效的

//校驗產品服務費費率 function validateProductServiceFeeRate(id, serviceFeeRate) { var message = true; $.ajax({ url: "/product/validateProductse

解決Tabhost.setCurrentTab()作用方法

方法一 修改TabWidget 的 mSelectedTab欄位 try { Class<TabWidget> tabWidgetClass = (Class<TabWidget>) mTabhost.getTabW

BrowserSync的大坑,監聽作用解決辦法,附gulp瀏覽器同步自動重新整理部署方法

                能將本地伺服器代理到localhost:3000/localhsot:3001的操作:按照官網來操作的程式碼是不起作用的:browser-sync start --proxy "127.0.0.1:8081" "E:/newcrm/trunk/4_Tools/crm/**/*.

Chrome瀏覽器中autocomplete="off"作用解決方案

統一 type toc 網上 word 清除 登錄 保存 input 多數瀏覽器默認會緩存input的值,只有使用ctl+F5強制刷新的才可以清除緩存記錄。 如果不想讓瀏覽器緩存input的值,有2種方法: 方法一: 在不想使用緩存的input中添加 autocompl

Git忽略檔案作用解決方案

       開發過程中由開發工具生成的檔案一般不需要提交,但每次開發工具會自動去修改這些檔案,每次都要去提交這些東西,不提交會有一系列問題,很煩人。        可以通過配置.gitignore檔案讓git不在跟蹤記錄這些檔案。心血來潮去配置的時候,發現配

DialogFragment設定Cancelable(false)作用

這兩天碰到一個問題,在DialogFragment中想讓dialog不消失,一般說直接設定setCancelable(false)就完了,但始終沒有起作用。 程式碼如下: @Override public Dialog onCreateDialog(Bund

IE8下 元素hidden屬性作用解決

標籤:IE8    hidden不起作用    hidden無效 參考原文:http://itechnology.lofter.com/post/1ce97b55_6a11a0f 問題描述:寫專案時候部分頁面加了元素的hidden屬性,但是沒起作用,本應該隱藏的資料還是

web.xml error-page 作用解決方案

今天遇到一個問題(應該是個老問題,但網上答案各異),記錄下來  在web.xml中配置錯誤頁面跳轉如下:  <error-page>  <exception-type>java.lang.Exception</exception-type>

springmvc mybatis 註解的方式 事務作用解決方案

1、使用springmvc導致事務不起作用時,首先檢視是否元件重複掃描問題導致        由於採用的是SpringMVC、 MyBatis,故統一採用了標註來宣告Service、Controller。伺服器啟動時的載入配置檔案的順序為web.xml---root-con