node.js中的jQuery.ajax()?

voi*_*tor 32 jquery node.js

是否可以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)


fen*_*ent 8

如果您需要精确的jQuery.ajax语法,请尝试https://github.com/driverdan/node-XMLHttpRequest

但实际上,如果您可以控制您调用ajax的内容,则应该使用节点http.request或类似请求的模块来执行此操作.


Arn*_*man 7

我也在浏览器和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)