Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение массива в JS от PHP через ajax (https://javascript.ru/forum/misc/78144-poluchenie-massiva-v-js-ot-php-cherez-ajax.html)

laimas 06.08.2019 17:34

Цитата:

Сообщение от vlasenkov
Это я делаю, чтобы строки в числа перевести

:) Это глупости, для этого есть приведение типов:
$item = (int)preg_replace('/.+=([0-9,\.]+)/', '$1', $item);

Кроме этого можно указать при кодировании кодировать строки содержащие только числа как числа:
$a = ['1', '2', '3'];
echo json_encode($a); //["1","2","3"]
echo json_encode($a, JSON_NUMERIC_CHECK); //[1,2,3]

vlasenkov 06.08.2019 17:56

Спасибо, но в любом случае, либо массив пустой, либо ошибка. Даже не знаю уже куда копать и что не так.

vlasenkov 06.08.2019 18:23

Я нашел ошибку. Видимо сказывается не знание о видимости переменных.
Ибо сейчас код такой:
jQuery.ajax({
    url: 'assets/template/js/calc/getcoefu.php',
    type: 'GET',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: 'file='+fileU,
    success: function(data){
         console.log(data);
    }
});


И все выводится и работает классно.

До этого все было так:
var U = new Array();
jQuery.ajax({
    url: 'assets/template/js/calc/getcoefu.php',
    type: 'GET',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: 'file='+fileU,
    success: function(data){
         U = data;
    }
});

console.log(U);


И выводился пустой массив. Что я не так с переменными и их объявлением тогда делаю не так?

P.S.
Всем спасибо кто участвовал в обсуждении.

laimas 06.08.2019 18:46

Во втором случае ajax и console.log, это асинхронные события, вывод в консоль не будет ожидать когда завершится ajax запрос, а значит выводить будет пустой массив. В первом случае же, получили и вывод в консоль по ответу сервера.


Часовой пояс GMT +3, время: 04:30.