有没有办法在Node.js服务器的客户端(浏览器)执行Javascript代码而不使用 Socket.io ?像Callback函数那样从Node.js服务器获取响应,以便在向node.js服务器发起请求的浏览器上执行?
在普通的PHP / AJAX / Javascript通信中,当向PHP服务器发送请求时,有一个回调函数, xmlHTTP.responseText 将向我们提供服务器的响应以对浏览器采取操作!我想知道Node.js中是否有类似的东西?
更新
Node Server.js
var http=require('http');
var mysql = require('mysql');
var util = require('util');
var url = require('url');
var connection = mysql.createConnection({
host : 'localhost',
user : 'xxx',
password : 'xxx',
database : 'db_test', //mysql database to work with (optional)
});
connection.connect(); //connect to mysql
var server=http.createServer(function(req,res){
test(res);
});
server.on('listening',function(){
console.log('ok, server is running');
});
server.listen(9000);
function test(res){
var s = new Date().getTime();
connection.query('INSERT INTO table_test.emails (email) VALUES ("'+s+'")',function(err, result) {});
res.end('{id:db_id, time:timestamp}');
}
浏览器(客户端)呼叫:
ajax.call({
url: 'example.com/node',
method: 'post',
callback: function(){
alert('Response received from node.js server');
}
});
我需要从节点server.js发送一个响应,以便在回调函数中的浏览器中执行。我怎样才能做到这一点?
我可以在javascript中使用eval来评估服务器上的代码吗?我需要从服务器输出如下: var response = {id:db_id,time:timestamp,etc ..}
所以我在浏览器上得到响应并在那里呈现结果。
如果你提供一个简单的例子,我将不胜感激。
感谢。
答案 0 :(得分:0)
一种选择是在文档中插入一个脚本元素,并将src属性设置为所需的服务器请求,并使响应包含单个函数调用,通常将响应数据作为参数。这被称为“JSONP”。请注意,跨域策略不适用于这些请求。
另一种选择是传统的AJAX请求。从你的问题来看,我不明白为什么这不是一个自然的解决方案。
答案 1 :(得分:0)
我从没想过要轻松。在服务器端,响应将以以下格式发送:
res.end('{id:db_id, time:timestamp}');
在浏览器端,我通过以下方式接收并执行请求:
eval(xmlHttp.responseText);
感谢大家的参与。