1

我正在使用以下代码从客户端机器获取一些响应并正确获取该响应。但我必须将该响应发送给 Jquery。我不知道这怎么可能?

var getOsLists = function(context){
 var options = {
            host: '172.16.2.51',
            port: 9090,
            path: '/vm/osList',
            method: 'POST'
        };
 var req = http.request(options, function (res) {
            res.on('data', function (data) {               
                    console.log(data);  

                                                   // return sendJson(data, 404);

            });
        });
        req.on('error', function (e) {
            console.error(e);
        });
        req.end();
}
exports.getOsLists = getOsLists; 

我想在下面的部分中获取上述数据

function getOsList() {
    $.getJSON('/getOpSystem', function (data) {
            alert(data.toString()); // it does nt print anything
        var html = '';
        data.forEach(function (n) {
            alert(n);
            html += '<option value="' + n.ID + '">' + n.ID + '</option>';
        });
        $('#os').html(html);
    });
}

在 node.js 中

case '/getOpSystem':
          objSchedule.getOsLists();
          break;
4

4 回答 4

2

我建议使用express框架。它提供了一种res.json()方法,让您可以通过 Javascript 对象。该框架将处理将对象字符串化为 jQuery 可以读取的 JSON。

var express = require('express');
var app = express();

app.get('/getOpSystem', function(req, res) {
    var system = [];
    //make a request, put response in `system`
    res.json(system);
});

app.listen(3000);

或者,您可以dataType在请求中将选项设置为“文本”$.ajax并在浏览器端解析:

$.ajax(url, {
    method: 'POST',
    dataType: 'text'
}).done(function(data) {
    //do something
    var array = data.split(',');
});
于 2013-11-12T10:24:08.330 回答
1

这不是一个有效的 JSON(您可以在这里查看)。 {}表示一个对象,您必须使用逗号半列分隔对象。 半列表示将其分配给不同的变量;coma表示它是一个数组

所以它应该是这样的

[{"ID": "VM-WIN7-64","OS": "Windows 7"},
 {"ID": "VM-WIN7-32","OS": "Windows 7"},
 {"ID": "V M-WIN7-32-1","OS": "Windows 7"},
 {"ID": "VM-WIN7-32-2","OS": "Windows 8"}
]

我把它做成一个数组,因为你正在使用 data.forEach

于 2013-11-12T08:14:46.053 回答
0

您可以使用 Jquery Ajax post call 将数据发送到服务器。检查代码

    $.ajax({
    type: "POST",
    url: "some.php",
    data: { name: "John", location: "Boston" }
   })
   .done(function( msg ) {
   alert( "Data Saved: " + msg );
   });
于 2013-11-12T10:23:43.597 回答
0

只需将响应作为 JSON 发送,在 express.js 中就这么简单:

res.json(object);
于 2013-11-12T08:08:14.120 回答