Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js服务器请求后在浏览器端执行回调函数_Javascript_Ajax_Node.js - Fatal编程技术网

Javascript Node.js服务器请求后在浏览器端执行回调函数

Javascript Node.js服务器请求后在浏览器端执行回调函数,javascript,ajax,node.js,Javascript,Ajax,Node.js,有没有办法不使用Socket.io在Node.js服务器的客户端浏览器上执行Javascript代码?类似于回调函数的功能,用于从Node.js服务器获取响应,以便在向Node.js服务器发出请求的浏览器上执行该响应 在正常的PHP/AJAX/Javascript通信中,当向PHP服务器发送请求时,会有一个回调函数,xmlHTTP.responseText会给我们一个来自服务器的响应,以便在浏览器上执行操作!我想知道Node.js中是否有类似的内容 更新 Node Server.js var h

有没有办法不使用Socket.io在Node.js服务器的客户端浏览器上执行Javascript代码?类似于回调函数的功能,用于从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');
    } 
});
我需要从node server.js发送一个响应,在回调函数的浏览器中执行。我怎样才能做到这一点

我可以在javascript中使用eval来评估服务器上的代码吗?我需要像这样从服务器输出: var响应={id:db_id,time:timestamp等..}

所以我在浏览器中得到响应,并在那里渲染结果

如果你能提供一个简单的例子,我将不胜感激


谢谢。

一个选项是在文档中插入一个脚本元素,将src属性设置为所需的服务器请求,并使响应包含一个函数调用,通常将响应数据作为参数。这被称为JSONP。请注意,跨源策略不适用于这些请求


另一个选项是传统的AJAX请求。从你的问题来看,我不明白为什么这不是一个自然的解决方案。

我从来没有想过这会很容易。在服务器端,响应将以以下格式发送:

res.end('{id:db_id, time:timestamp}');
在浏览器端,我通过以下方式接收并执行请求:

eval(xmlHttp.responseText);

感谢大家的参与。

Node.js是服务器端代码。客户端Javascript甚至无法区分对Node.js服务器和PHP服务器的AJAX请求。你试过什么?什么不起作用?有没有办法使用回调函数?我需要从node.js服务器获取结果,以便在web浏览器上执行它。这就是为什么我调用服务器从数据库中获取结果并将其呈现给浏览器@是的,无论您使用php做了什么,都应该在node中工作,只是在客户端和服务器上使用相同的语言。SLaks就是这么说的。@moderns:这是一个常规的AJAX请求。你试了什么?你有什么问题?@BenjaminGruenbaum你能发个简单的代码吗?我是Node.js新手,在互联网上找不到示例。谢谢。这里没有理由使用JSONP。缺少SOP是一个安全问题,不是一个优势。请您发布一个完整的简单代码好吗?谢谢。@SLaks,两种说法都对。我编辑以反映这一点。我想我说这是一个好处,因为通常使用JSONP来绕过跨源策略。@moderns google jquery ajax为您推荐使用jquery:$.ajaxpath_to_server_endpoint,{success:callback}我想您想要的是JSON.parse而不是eval。parse将解析任何有效的JSON字符串,其中eval将执行任意JS代码。在这种情况下,这可能无关紧要,但如果数据的任何部分来自不受信任的源,您肯定会希望使用JSON.parse.Thank,但JSON.parse不会执行所有Javascript代码。如果我想执行来自响应的警报“hello”,JSON.parse将不起作用:请澄清