Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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的jQuery包中没有$.ajax方法?_Javascript_Jquery_Ajax_Node.js - Fatal编程技术网

Javascript 为什么node.js的jQuery包中没有$.ajax方法?

Javascript 为什么node.js的jQuery包中没有$.ajax方法?,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我的代码是这样的,我想练习jQuery的ajax功能(我已经运行了npm install jQuery来安装这个包): 但是NodeJS编译器抱怨jQuery模块中没有ajax方法 bash-3.2$ node test.js /Users/hanfeisun/Downloads/node/test.js:14 var promise = $.ajax({ ^ TypeError: Object function ( w ) {

我的代码是这样的,我想练习jQuery的ajax功能(我已经运行了
npm install jQuery
来安装这个包):

但是NodeJS编译器抱怨jQuery模块中没有
ajax
方法

bash-3.2$ node test.js 

/Users/hanfeisun/Downloads/node/test.js:14
var promise = $.ajax({
                ^
TypeError: Object function ( w ) {
                if ( !w.document ) {
                    throw new Error( "jQuery requires a window with a document" );
                }
                return factory( w );
            } has no method 'ajax'
    at Object.<anonymous> (/Users/hanfeisun/Downloads/node/test.js:14:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3
bash-3.2$node test.js
/Users/hanfeison/Downloads/node/test.js:14
var promise=$.ajax({
^
类型错误:对象函数(w){
如果(!w.document){
抛出新错误(“jQuery需要一个包含文档的窗口”);
}
返回工厂(w);
}没有“ajax”方法
在对象上。(/Users/hanfeison/Downloads/node/test.js:14:17)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
位于Function.Module.runMain(Module.js:497:10)
启动时(node.js:119:16)
在node.js:906:3
jQuery for Browser JS编译器和NodeJS的javascript代码不应该相同吗

如果没有,有人知道主要原因吗?谢谢!Node.js的Javascript(服务器端)与通常的客户端Javascript有点不同。它是一种Javascript,但具有不同的上下文环境

jQuery应该只帮助客户端javascript。有关更多信息,请尝试以下链接


我不太熟悉Node的javascript环境,但ajax的要点是使用javascript处理服务器响应,而不会导致页面刷新。在运行Node的服务器上,您只需发出一个正常的HTTP请求即可

事实上,快速的google搜索表明JQuery使用$.ajax构建的底层XMLHttpQuest在Node中不存在(事实上,它是浏览器对象模型的一部分),因此它在Node中不可用(尽管您可能可以通过利用Node的http请求模块来模拟它)


如果您想尝试使用$.ajax,您应该在浏览器环境中进行。您可以从包含JQuery的任何网页(如Stackoverflow)的javascript控制台中进行此操作,或者在标题中使用脚本标记制作您自己的测试HTML页,该脚本标记从CDN生成JQuery。

因为错误表明您需要一个窗口对象才能工作使用jquery。 您将需要JSDOM来使用Jquery方法

const { JSDOM } = require( "jsdom" ); 
const { window } = new JSDOM( "" ); 
const $ = require( "jquery" )( window ); // or const jquery = require( "jquery" )( window );

它不是一种
不同的语言
。它是JavaScript。碰巧大多数人熟悉的DOM API和网络API只存在于浏览器中,而节点的API只存在于节点中。jQuery可以在DOM API和XMLHttpRequest可用的任何地方运行。
const { JSDOM } = require( "jsdom" ); 
const { window } = new JSDOM( "" ); 
const $ = require( "jquery" )( window ); // or const jquery = require( "jquery" )( window );