Преобразовать объект в массив
Есть объект,который возвращается путем ajax запроса.
Простенький скрипт,но в последующем,массив буду получать из бд. session_start(); if($_POST['j'] == $_SESSION['g']) { $array = [4, 8, 10, 12]; $array = json_encode($array); print_r($array); }else echo '0'; setInterval(function(){ $.ajax({ url: 'ajax.php', type: "POST", data: {j:'<?=$hash?>'}, dataType: "json", success: function(result) { if(result == 0) alert('unexpected error'); else { var res = Array.from(result); if($.inArray(0, res)) alert(5); } } }); }, 3000); Вот,что я пытаюсь сделать,но он работает некорректно, на элемент 0,он выводит,что есть,а на самом деле нет элемента со значением 0.Как это исправить. Пробовал так преобразовать массив,то же самое var res = Object.keys(result).map(function(key) { return [Number(key), result[key]]; }); |
Цитата:
|
Цитата:
|
Цитата:
А json нужно отдавать как echo (для предотвращения неконтролируемого вывода до и после передачи json, лучше так exit(json)), то есть: if($_POST['j'] == $_SESSION['g']) { $array = [4, 8, 10, 12]; $array = json_encode($array); echo $array; } else echo '0'; - это глупость, так как не является JSON, которое предписано принять клиенту. В этом случае result на клиенте будет пуста, так работает jQuery. То есть это if(result == 0) alert('unexpected error'); else { var res = Array.from(result); if($.inArray(0, res)) alert(5); } лишено всякого смысла - если json валидный, то result и будет массивом [4, 8, 10, 12]. |
ясно,спасибо
|
Часовой пояс GMT +3, время: 07:31. |