2016-12-15 104 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; 

         } 
        } 
       });