JQuery и JSON array-Как проверить, является ли массив пустым или неопределенным?

мне нужно передать массив php в jquery для некоторых задач. Массив php создается для сеанса, а затем json_encoded для jquery. После этого я сохраню эту переменную в пространстве имен window js, чтобы использовать массив в моем скрипте jquery.

if(isset($_SESSION['mySession'])){
    $json_array = json_encode($php_array);
}

<script>
    <?php echo "window.json_from_php = ".$json_array; ?>
</script>

то, что мне нужно сделать, это проверить, существует ли этот массив вообще/пуст/не определен, прежде чем что-либо делать. Предложение check успешно выполняется для "неопределенного" операнда, но не для остальных. Как я могу проверить в jquery, пуст ли массив или нет?

это вывод массива json_encoded после инициализации, когда в $php_array нет никаких элементов:

string '[""]' (length=4)

и вот jquery:

$(function() {
        var results = $('#results');
        var js_array = window.json_from_php;
        var count = js_array.length;

        if ((typeof window.json_from_php === 'undefined') || (js_array === null) || (jQuery.isEmptyObject(js_array)) || (count === 0)) {
            $('<p>Array is empty.</p>').appendTo(results);
        }
        else {
            jQuery.each(js_array,function(key,val){
                $('<ul><li id="'+key+'">'+val+'</li></ul>').appendTo(results);                  
            });
        }
    });

2 ответов


вот как я проверяю пустой / нулевой массив json.

if (js_array == undefined || js_array == null || js_array.length == 0){
    $('<p>Array is empty.</p>').appendTo(results);
}

Если Ваш массив json [""] возможно, вам придется добавить что-то вроде

if (js_array == undefined || js_array == null || js_array.length == 0 || (js_array.length == 1 && js_array[0] == ""))

этого должно быть достаточно:

if (typeof js_array === 'undefined' || !js_array.length) {
   $('<p>Array is empty.</p>').appendTo(results);
} else {...}