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 {...}