0

私は、自分のサイトでホストされているクライアント js から nodejs サーバーに投稿するために、Google で何時間も検索してきましたが、それらの結果をクライアント側に返すことはありませんでした。

これは私が達成しようとしているものの例です:

<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);
4

2 に答える 2

3

入力衛生の問題はさておき、これを解決する方法は次のとおりです。

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);
于 2011-10-07T03:37:40.520 に答える
1
response.writeHead(200, { 'Content-Type' : 'application/json' });
response.send( JSON.stringify(results) );

私はこれを試していませんが、あなたが望むもののように見えます。結果、フィールドの内容、またはより多くのデータ操作が必要かどうかはわかりません。「結果」はJSONオブジェクトだと思います。

于 2011-10-07T04:21:15.277 に答える