Публиковать в nodejs и возвращать результаты - PullRequest
0 голосов
/ 07 октября 2011

Я часами искал в Google информацию о том, чтобы отправить сообщение от моего клиента js, размещенного на моем сайте, на сервер nodejs, а затем вернуть эти результаты обратно на мою клиентскую сторону.

Это пример того, чего я пытаюсь достичь:

<html>
<head>
<script type="text/javascript">
var my_id = <?=$myuserid;?>;
$(function(){
    $.ajax({
        url: 'http://mydomain.com:8001/get_friends',
        dataType: 'JSONP',
        type: 'POST',
        crossDomain: true,
        data: {
            id: my_id
        },
        success: function(data){
            if(data.error===true){
                alert(data.msg);
            } else {
                alert(data.users);
            }
        }
    });
});
</script>
</head>
<body>
</body>
</html>

Чем файл NodeJS:

var http = require('http'),
    url = require('url'),
    mysql = require('mysql'),
    sys = require('sys');
var client = mysql.createClient({
    user: 'root',
    password: 'password',
});

http.createServer(function(request, response){
    client.query('USE mydatabase');
    client.query(
        'SELECT * FROM buddy_list WHERE user_id = "This is where I need my post to go"',
        function selectCb(err, results, fields){
            if(err){
                throw err;
            }
            response.writeHead(200, { 'Content-Type' : 'application/json' });
            "Here I need it to feed back results to client script."
            response.end();
            client.end();
    })
}).listen(8001);

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Ввод проблем санитарии в сторону, вот как бы вы решили это:

http.createServer(function(request, response){
    request.on('data', function(chunk) {
        dataInput = chunk.toString();
        client.query('USE mydatabase');
        client.query(
            'SELECT * FROM buddy_list WHERE user_id = ' + dataInput,
            function selectCb(err, results, fields){
                if(err){
                    throw err;
                }
                response.writeHead(200, { 'Content-Type' : 'application/json' });
                "Here I need it to feed back results to client script."
                response.end();
                client.end();
        })

    })
}).listen(8001);
1 голос
/ 07 октября 2011
response.writeHead(200, { 'Content-Type' : 'application/json' });
response.send( JSON.stringify(results) );

Я не пробовал это, но похоже, что вы хотите. Я не уверен, какие результаты, поля имеют или если нужно больше манипулировать данными. Я предполагаю, что «результаты» - это объект JSON.

...