Попытка передать массив в ajax как массив - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь передать свой массив из контроллера в результаты ajax, а затем использовать результаты, чтобы определить, должен ли я показывать определенный div или нет.Ниже мой контроллер PHP.

public function actionCheckUser(){
    $user = $this->user;
    $has_name = $user['realname'] != '' ? 'name_tab' : 'none';
    $has_mobile_verified = $user['mobilestatus'] == 1 ? 'mobile_tab' : 'none';

    $check = array($has_name, $has_mobile_verified);
    $data['result'] = $check;
    echo json_encode($data);
}

А вот мой ajax

    var myarray = new Array();
$.ajax({
    url: "/member/CheckUser",
    type: "POST",
    success: function(data){
        var myarray = $.parseJSON(data);
        array = myarray.result;
        myarray = array.split(',');
    },
    error: function (xhr, ajaxOptions, thrownError) {
        //alert(xhr.status);
        alert(thrownError);
    },
    //dataType:"json"
});

$(".tab").each(function(){
    if(jQuery.inArray($(this).attr('id'), myarray) !== -1){
        var id = $(this).attr('id');
        $('#'+id).removeClass('tab');
        $('#'+id).hide();
    }
});

Я не могу вернуть его как массив, и он также ничего не сделал с моим div...

Я пытаюсь использовать результаты, чтобы определить, какой div скрыть, а какой показать.

1 Ответ

0 голосов
/ 28 сентября 2018

Полагаю, есть некоторая проблема с тем, как вы обрабатываете ajax-ответ. Вам не нужно разбивать массив myarray = array.split(',');, переменная array уже является массивом с двумя значениями в соответствии с логикой вашего контроллера. Вы должны изменить свойЛогика JavaScript выглядит следующим образом:

var myarray = new Array();
$.ajax({
    url: "/member/CheckUser",
    type: "POST",
    success: function(data){
        var myarray = $.parseJSON(data);
        initializeTabs(myarray.result);
    },
    error: function (xhr, ajaxOptions, thrownError) {
       //alert(xhr.status);
       alert(thrownError);
    },
    //dataType:"json"
});

function initializeTabs(myarray) {
    $(".tab").each(function(){
        if(jQuery.inArray($(this).attr('id'), myarray) !== -1){
            var id = $(this).attr('id');
            $('#'+id).removeClass('tab');
            $('#'+id).hide();
        }
    });
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...