如何检查AJAX成功响应中是否存在值

时间:2016-12-15 04:19:46

标签: javascript php jquery 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的值。如果存在,则重定向到页面A,如果没有重定向到页面B.当我在alert上使用v.NamaOutlet时,该值存在。但为什么我没有重定向到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"}

5 个答案:

答案 0 :(得分:1)

设置window.location.href并不会立即终止当前脚本 - 我不确定这是跨浏览器的可靠性,但是如果您将window.location.href设置为超过我在Chrome中的测试一旦在同一个脚本中,浏览器导航到JS函数结束前的 last 值集。

因此,在您的情况下,它将导航到测试数组中最后一项的结果,因为您的$.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";
       }
    }

答案 1 :(得分:0)

我在这里找到的唯一可能的原因是你可能正在使用Internet Explorer而且Internet Explorer并不真正接受相对URL,如其中一个答案中所述 window.location.href not working on IE

休息一切似乎都很好。希望这可以帮助。

答案 2 :(得分: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";

                    }
                }
            });

答案 3 :(得分:0)

如果其他条件不适合您的情况,请让您的id 商业银行,即您给定的json响应的最后一个数组值。所以映射json将检查第一个索引id,如果不相等,则重定向到page_b。但id中存在json response,因此您的情况不符合条件。您想检查id中是否存在outlet以便映射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";                   
        }   
 });

答案 4 :(得分: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;

                        }
                    }
                });