Задать вопрос
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


Подскажите пожалуйста как можно данные передать?
  • Вопрос задан
  • 3871 просмотр
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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));


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

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

Похожие вопросы