2016-12-15 38 views
1

存在的值我有一個AJAX。如何檢查是否在AJAX成功響應

var id = "some_text"; 
    $.ajax({ 
     type  : "GET", 
     dataType : "json", 
     url   : "<?php echo site_url('con_atk/get_outlet'); ?>", 
     async  : false, 
     success  : function(outlet){ 

      $.map(outlet, function (v) { 

       if(v.NamaOutlet == id){ 
       window.location.href = "page_a.php"; 
       } 
       else{ 
       window.location.href = "page_b.php"; 
       } 

      }) 
     } 
}) 

我想檢查是否在AJAX調用成功(JSON對象類型)是存在的id值。如果它存在,重定向到一個頁面,當我在v.NamaOutlet使用alert如果不是重定向到網頁B的值是存在的。但爲什麼我沒有重定向到page_a.php?

編輯

當我使用alert(JSON.stringify(outlet));

[{"KodeOutlet_iBSM":"ACG","NamaOutlet":"Accounting"},{"KodeOutlet_iBSM":"BBG","NamaOutlet":"Business Banking"},{"KodeOutlet_iBSM":"CB I","NamaOutlet":"Corporate Banking I"},{"KodeOutlet_iBSM":"CB II","NamaOutlet":"Corporate Banking II"},{"KodeOutlet_iBSM":"CBT","NamaOutlet":"Corporate & Branch Transformation"},{"KodeOutlet_iBSM":"CCG","NamaOutlet":"Culture & Customer Care"},{"KodeOutlet_iBSM":"CHG","NamaOutlet":"Consumer Finance & Hajj"},{"KodeOutlet_iBSM":"CMG","NamaOutlet":"Commercial Banking"} 
+0

我不得不使用,如果要檢查它。 – Vahn

+0

你的'php'代碼如何? –

+0

它仍然在jQuery獨家新聞。不需要PHP代碼。 – Vahn

回答

1

設置window.location.href不會立即終止當前的腳本 - 我不知道如何可靠,這是跨瀏覽器,但在我的Chrome瀏覽器測試,如果你設置不止一次window.location.href更在同一個腳本的瀏覽器導航到JS函數結束前將最後值。

所以在你的情況下,它會導航到測試數組中最後一項的結果,因爲你的$.map()循環爲數組中的每個項目運行if/else。

你也可以使用你的循環設置一個標誌,指示是否該項目已在數組中隨處可見:

success  : function(outlet){ 
     var idFound = false; 
     $.each(outlet, function (v) { 
      if(v.NamaOutlet == id){ 
      idFound = true; 
      } 
     }); 
     window.location.href = idFound ? "page_a.php" : "page_b.php"; 
    } 

請注意,我用$.each(),因爲雖然$.map()將獲得相同的結果它沒有真正意義,因爲你沒有真正做任何映射。

您可以整理這件事,通過使用array .some() method而不是$.each()刪除一個標誌變量的需要:

success  : function(outlet){ 
     if (outlet.some(function(v) { return v.NamaOutlet == id; })) { 
      window.location.href = "page_a.php"; 
     else { 
      window.location.href = "page_b.php"; 
     } 
    } 
+0

也謝謝你這個作品。 – Vahn

0

唯一可能的原因,我能找到這裏,你可能會使用Internet Explorer和Internet Explorer並沒有真正接受相對URL如這裏的答案 window.location.href not working on IE

休息的一個提到的一切似乎都很好。希望這可以幫助。

+0

我正在使用Firefox – Vahn

0

試試吧:

  var id = "Business Banking"; 
      $.ajax({ 
       type: "GET", 
       dataType: "json", 
       url: "<?php echo site_url('con_atk/get_outlet'); ?>", 
       async: false, 
       success: function (outlet) { 

        //[{"KodeOutlet_iBSM":"ACG","NamaOutlet":"Accounting"},{"KodeOutlet_iBSM":"BBG","NamaOutlet":"Business Banking"},{"KodeOutlet_iBSM":"CB I","NamaOutlet":"Corporate Banking I"},{"KodeOutlet_iBSM":"CB II","NamaOutlet":"Corporate Banking II"},{"KodeOutlet_iBSM":"CBT","NamaOutlet":"Corporate & Branch Transformation"},{"KodeOutlet_iBSM":"CCG","NamaOutlet":"Culture & Customer Care"},{"KodeOutlet_iBSM":"CHG","NamaOutlet":"Consumer Finance & Hajj"},{"KodeOutlet_iBSM":"CMG","NamaOutlet":"Commercial Banking"}] 

        var exist = false; 
        for (var i = 0; i < outlet.length; i++) { 

         if (outlet[i].NamaOutlet === id) { 
          exist = true; 
          break; 
         } 


        } 
        if (exist) { 
         window.location.href = "page_a.php"; 

        } else { 
         window.location.href = "page_b.php"; 

        } 
       } 
      }); 
+0

這可行。但'var exists = true'應該是'var exist;'。 – Vahn

+2

'var exists = false;'會比'undefined'更有意義作爲默認值,但兩者都可以。 – nnnnnn

+0

如果我想將'window.location.href =「page_a.php'存儲到一個變量'link'中,我怎樣才能在AJAX調用之外使用它? – Vahn

0

如果其他條件不適合你的情況,讓你的id商業銀行,。所以映射JSON你給JSON響應的最後一個數組值將被首先檢查指數與id,所以如果不等於它重定向到page_b。但你有id存在於json response,這樣的條件不適合你的條件真的。你想檢查idoutlet存在使地圖json array如果它發現重定向頁面,如果沒有找到寫重定向其他頁面下一執行行....

var id = "Commercial Banking"; // eg value 
    $.ajax({ 
     type  : "GET", 
     dataType : "json", 
     url   : "<?php echo site_url('con_atk/get_outlet'); ?>", 
     async  : false, 
     success  : function(outlet){ 

      $.map(outlet, function (v) { 
       if(v.NamaOutlet == id){ 
       window.location.href = "page_a.php"; 
       }  
      }); 
      window.location.href = "page_b.php";     
     } 
}); 
+0

不會總是設置'.href =「page_b.php」'因爲那個線循環後運行? – nnnnnn

0
$('#btn').click(function() { 
       $.ajax({ 
        type: "GET", 
        url: '/Contrller/Action Name', 
        data: {}, 
        contentType: "application/json;", 
        dataType: "json", 
        success: function (r) { 
         console.log(r); 
         if (r == true) { 
          $.ajax({ 
           type: "GET", 
           url: '/Contrller/Action', 
           data: { }, 
           contentType: "application/json;", 
           dataType: "json", 
           success: function (r) { 
            $("#btnclosem").trigger("click") 
            var select = $("#Div"); 
            select.empty(); 
       select.append($('<option/>', {value: 0,text: "" })); $.each(r.list, function (index, itemData) { 
} 
          }); 
          return false; 

         } 
         else { 
          alert("") 
          return false; 

         } 
        } 
       });