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代码。