Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2018, 20:17
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

Преобразовать объект в массив
Есть объект,который возвращается путем 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]];
						});
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2018, 20:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от SolomonRei
print_r($array);
Это для кого?
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2018, 20:29
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

Сообщение от laimas Посмотреть сообщение
Это для кого?
Чтобы получить значение ответа.Потому что return не работает
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2018, 20:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от SolomonRei
Чтобы получить значение ответа.Потому что return не работает
return, это выход из функции, а json, это строка, а не массив, print_r для ее вывода совсем не нужна. Более того, если и требуется таким образом передать клиенту структуру массива, то нужно перехватывать вывод и только потом отдавать клиенту - echo print_r($array, true).

А 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].

Последний раз редактировалось laimas, 27.12.2018 в 20:48.
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2018, 20:44
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

ясно,спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
Преобразовать массив из строк в массив из байтов someQuestions Общие вопросы Javascript 3 12.10.2017 13:21
Как преобразовать объект в массив platedz Events/DOM/Window 7 05.01.2016 03:09
Как преобразовать объект в упорядоченный массив Shitbox2 Общие вопросы Javascript 15 09.06.2014 18:23
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10