27.04.2018, 15:07
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Работа массивом
Добрый день. Я записываю массив в тестовый фаил, и хочу получить обратно такой же массив, только уже из файла. Начальный массив выглядит так:
start_arr = [[1524830444500, "334"],[1524830454487, "334"],[1524830464486, "334"]];
console.log(start_arr);
Получившийся текстовый фаил допустим выглядит так, записанно все в одну строку без пробелов:
["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]
Преобразую его в массив, получаю вот это:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']
console.log(end_arr );
Как мне привести end_arr к виду start_arr ?
Что то вроде?:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']
console.log(end_arr[0].split(' '));
|
|
27.04.2018, 15:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
|
|
27.04.2018, 15:32
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
рони,
Написал так:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]'];
end_arr = JSON.parse(end_arr);
console.log(end_arr );
Пишет ошибку: Uncaught SyntaxError: Unexpected token [ in JSON at position
|
|
27.04.2018, 15:33
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от Artur_Hopf
|
Получившийся текстовый фаил допустим выглядит так, записанно все в одну строку без пробелов:
["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]
|
А почему? И зачем?
var start_arr = [[1524830444500, "334"],[1524830454487, "335"],[1524830464486, "336"]],
str_arr = JSON.stringify(start_arr);
alert(str_arr);
var end_arr = JSON.parse(str_arr);
alert(end_arr[1][1]);
|
|
27.04.2018, 15:34
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
перед тем как записываете в файл сделайте.
JSON.sringify(ваш_массив)
|
|
27.04.2018, 15:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Artur_Hopf
|
['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']
|
Это не JSON.
JSON.stringify([[1524830444500, "334"],[1524830454487, "334"],[1524830464486, "334"]]) возвратит нужное.
|
|
27.04.2018, 15:45
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
laimas,
j0hnik,
Dilettante_Pro,
принял все к сведению, как все получится, отпишусь
|
|
27.04.2018, 16:37
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
laimas,
j0hnik,
Dilettante_Pro,
рони,
Не получается
Вот весь пусть что я делаю
1. Пишутся данные в массив:
// все под setInterval
var inputdata = [[]];
var data2 = [d1, d2]; //данные
inputdata.push(data2); //фигачим данные в пустой массив, там они копятся
//далее отправляем все это в php
var inp = inputdata[inputdata.length -1];
// отравляем последнее значение, чтобы их можно было получить если обновить страницу
$.ajax({
type: 'ajax',
method: 'post',
url: ' url',
data: ({inp}),
dataType: 'json',
success: function(data){
console.log(data);
};
});
Далее в php:
public function put_inputdata(){
$inputdata = $this->input->post('inp');
$data = json_encode($inputdata);
file_put_contents(ROUT_LOG, $data, FILE_APPEND); //ROUT_LOG путь к файлу
$get_data = file_get_contents(ROUT_LOG); //читаем этот же фаил
// $get_inputdata = json_decode($get_data, TRUE); // этот пункт что то не работает если в файле больше 1го значения []
return $get_data; //поэтому просто получаю содержимое файла
}
Привет javascript :
//все тот же ajax запрос под setInterval
$.ajax({
type: 'ajax',
method: 'post',
url: ' url',
data: ({inp}),
dataType: 'json',
success: function(data){
console.log(data); //вот как вот это преоброзовать в то что было?
};
});
Последний раз редактировалось Artur_Hopf, 27.04.2018 в 16:40.
|
|
27.04.2018, 16:48
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Artur_Hopf
|
var inputdata = [[]];
|
var inputdata = [];
var inp = inputdata[inputdata.length -1]; - чего это будет?
data: ({inp}), - зачем здесь скобки?
$inputdata = $this->input->post('inp'); - откуда это может появится на сервере?
Откройте отладчик браузера и посмотрите что будет отправляться на сервер.
|
|
27.04.2018, 16:53
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от laimas
|
var inp = inputdata[inputdata.length -1]; - чего это будет?
|
var inputdata = [];
var data2 = [1, 2]; //данные
inputdata.push(data2); //фигачим данные в пустой массив, там они копятся
//далее отправляем все это в php
var inp = inputdata[inputdata.length -1];
alert(JSON.stringify(inp));
|
|
|
|