我已经用 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?