nepster-web
@nepster-web

Как передать многомерный массив в node.js?

Задача передать многомерный массив из php в node.js

php
$data = array();
                    
                    $data['rules'] = array(
                        array('count_player' => 2),
                        array('team_game'    => 0),
                        array('time_hit'     => 120),
                    );
                    $data['users'] = array(
                        array('user_id'=>1,'avatar'=>'url','login'=>'Nepster','root'=>1),
                        array('user_id'=>2,'avatar'=>'url','login'=>'Zowen','root'=>0),
                    );
                  
                    $data = json_encode($data);
                    
                    $curl = curl_init();
                    
                    curl_setopt($curl, CURLOPT_URL, "http://localhost:8888");
                    curl_setopt($curl, CURLOPT_POST, 1);
                    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                
                    curl_exec($curl);


Node (Как подсказал @Scorpi )
var http = require('http'),
    formidable = require('formidable'),
    util = require('util');

http.createServer(function (req, res) {
    if (req.method == 'POST') {
        
        var form = new formidable.IncomingForm();
    
        form.parse(req, function(err, fields, files) 
        {
        
            console.log(fields);
            
    	});
    }
  	res.end();
}).listen(8888);

console.log('START');


Если передавать array('test'=>'data');

Все будет хорошо, если пробовать многомерный массив везде получим array, если пробовать передать json возникает ошибка при парсинге unexpected token o


Подскажите пожалуйста как можно данные передать?
  • Вопрос задан
  • 3865 просмотров
Пригласить эксперта
Ответы на вопрос 3
$data = http_build_query($data);
вместо json_encode() не поможет?
Ответ написан
Комментировать
Писал на Node, никогда не возникало проблем с созданием многомернго массива, будь то из php, будь то от формы через http.
Как делал? json_encode($data); -> передаете, через GET или POST
На принимающей стороне нечто вроде JSON.parse();
Если у вас вылазит ошибка unexpected token o, попробуйте вывести полученное значение в консоль и загнать в любой онлайн-парсер JSON. И вам все сразу станет ясно, что и где пошло не так. В общем, никаких проблем, после вывода в консоль возникнуть не должно)
Ответ написан
Комментировать
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); не должно быть строкой, вы же не стороне node.js ожидаете данные от формы.
Пишите что то вроде:
curl_setopt($curl, CURLOPT_POSTFIELDS, array('jsonData'=>$data));


Или парсите на стороне ноды сырые данные, но это более замороченный путь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 10:21
1200 руб./в час
26 апр. 2024, в 10:10
1000 руб./за проект