0

我已经用 C++ 编写了一个 nodejs 插件,我正在尝试使用 jQuery 从本地托管的网页中调用它。我已经读到由于相同的源策略,我无法直接调用 nodejs,所以我应该使用 jsonp。注意:我对 jquery、nodejs 和 json(p) 很陌生,但我喜欢冒险。我现在正在使用以下代码:

node_test.js:

var mylib = require("./mylibrary");
var http = require("http");

http.createServer(function(req, res) {
    console.log("Received request: " + JSON.stringify(req.url));
    res.writeHead(200, {"Content-type": "text/plain"});
    res.end('_testcb(\'{"message": "' + mylib.my_awesome_function() + '"}\')');
}).listen(1337);

索引.html:

index.html:
<DOCTYPE HTML>
<html>
    <head>
        <title>
            NodeJS test
        </title>
        <link rel='stylesheet' type='text/css' href='style.css'/>
        <script type='text/javascript' src='jquery.js'></script>
    </head>
    <body>
    <div id="test"></div>
    <script>
        $(document).ready(function() {
            $.ajax({
                url: "http://127.0.0.1:1337/",
                dataType: "jsonp",
                jsonpCallback: "_testcb",
                cache: false,
                data: "test_data",
                timeout: 5000,
                success: function(data) {
                    $("#test").append(data);
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert('error ' + textStatus + " " + errorThrown);
                }
            });
        });
    </script>
    </body>
</html>

如果我在浏览器中运行node node_test.js并查看index.html,我的函数就会被调用。但是,我希望能够从我自己的 nodejs 库中执行多个功能。我想以某种方式解析我发送到我的 nodejs 应用程序的数据,并通过一个大开关盒运行它,有点像这样:

var reply = "";
switch (data) {
    case 1:
        reply = mylib.my_awesome_function();
        break;
    case 2:
        reply = mylib.my_cool_function();
        break;
    // repeat for every function I have
}
// send reply

但我不确定这是否是这样做的预期方式。是否有更好/更智能的方法可以从网页上的 jQuery/javascript 中多次调用 nodejs?

4

0 回答 0