我在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);
的index.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?