jQuery.ajax()在node.js?

是否有可能使用jQuery.ajax()在node.js完全一样,因为它是语法方面?

我正在尝试与node.js共享非UI浏览器代码。 我不想用自己的包装来replace所有现有的函数调用。

目前,当我尝试它,默认情况下,它会说“没有传输”,因为jQuery做域检测。 如果我通过设置jQuery.support.cors来closures它,它会说XMLHttpRequest.open()不可用。

我能够使用XMLHttpRequest模块解决“No Transport”问题,如下所示:

 var $ = require('jquery'), XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; $.support.cors = true; $.ajaxSettings.xhr = function() { return new XMLHttpRequest(); }; 

如果你想确切的jQuery.ajax语法,请尝试https://github.com/driverdan/node-XMLHttpRequest

但是,如果你可以控制你要调用的Ajax,你应该使用节点的http.request或者像request

也考虑najax,节点请求模块的包装器,它允许服务器端请求使用jquery风格的语法

https://github.com/alanclarke/najax

 var najax = require('najax'); najax('http://www.google.com', function(html){ console.log(html); }); najax('http://www.google.com', { type:'POST' }, function(html){ console.log(html); }); najax({ url:'http://www.google.com', type:'POST', success: function(html){ console.log(html); }); najax({ url:'http://www.google.com', type:'POST' }).success(function(resp){}).error(function(err){}); najax.get, najax.post, najax.put, najax.delete... 

我也在浏览器和nodejs之间共享代码,也使用JQuery进行Ajax调用。 JQuery需要一个我从Domino中使用的窗口。

更新:

 if (typeof module !== 'undefined' && module.exports) { if (typeof global !== 'undefined' && typeof global.process !== 'undefined' && Object.prototype.toString.call(global.process) === '[object process]') { var domino = require('domino'); var window = domino.createWindow('<html></html>'); var document = window.document; var $ = require('jquery')(window); var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; $.support.cors = true; // cross domain, Cross-origin resource sharing $.ajaxSettings.xhr = function() { return new XMLHttpRequest(); }; } } 

您可以使用Electron ,它允许混合browserjs和nodejs。

之前,我试图在nodejs中使用canvas2d,但最后我放弃了。 它不受nodejs默认支持,而且很难安装(很多… dependeces)。 在使用Electron之前,我可以轻松使用我以前的所有browserjs代码,甚至是WebGL,并将结果值(例如结果base64图像数据)传递给nodejs代码。