Мне нужно передать php-массив в jquery для некоторых задач. Массив php создается для SESSION, а затем json_encoded для jquery. После этого я буду хранить эту переменную в пространстве имен js окна, чтобы использовать массив в моем jquery-скрипте.
if(isset($_SESSION['mySession'])){ $json_array = json_encode($php_array); } <script> <?php echo "window.json_from_php = ".$json_array; ?> </script>
То, что мне нужно сделать, это проверить, существует ли этот массив вообще /, является пустым / неопределенным, прежде чем что-либо делать. Предложение проверки успешно выполняется для «неопределенного» операнда, но не для остальных. Как я могу проверить в 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); }); } });
Вот как я проверяю пустой / нулевой массив 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 {...}