是否可以jQuery.ajax()在node.js中使用,就像语法一样?
我正在尝试与node.js共享非UI浏览器代码.我不想用我自己的包装器替换所有现有的函数调用.
目前,当我尝试它时,它默认会说"No Transport",因为jQuery会进行域检测.如果我通过设置关闭jQuery.support.cors它会说XMLHttpRequest.open()不可用.
web*_*bXL 40
我能够使用XMLHttpRequest模块解决"No Transport"问题,如下所示:
var $ = require('jquery'),
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
$.support.cors = true;
$.ajaxSettings.xhr = function() {
return new XMLHttpRequest();
};
Run Code Online (Sandbox Code Playgroud)
alz*_*rke 10
还要考虑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...
Run Code Online (Sandbox Code Playgroud)
如果您需要精确的jQuery.ajax语法,请尝试https://github.com/driverdan/node-XMLHttpRequest
但实际上,如果您可以控制您调用ajax的内容,则应该使用节点http.request或类似请求的模块来执行此操作.
我也在浏览器和nodejs之间共享代码,并使用JQuery进行Ajax调用.JQuery需要一个我从多米诺骨牌中使用的窗口.
更新:
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();
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33681 次 |
| 最近记录: |