Преобразовать объект в массив
Есть объект,который возвращается путем 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, время: 09:39. |