2014-11-28 3 views
1

내 코드는 내가 (이미 패키지를 설치 npm install jquery를 실행 한) jQuery의 AJAX 기능을 연습하려면, 다음과 같습니다

var $ = require('jquery'); 

var remoteValue = false; 

var doSomethingWithRemoteValue = function() { 
    console.log(remoteValue); 
} 

var promise = $.ajax({ 
    url: 'https://google.com' 
}); 

//outputs "true" 
promise.always(function() { 
    remoteValue = true; 
    doSomethingWithRemoteValue();  
}); 

//outputs "foobar" 
promise.always(function() { 
    remoteValue = 'foobar'; 
    doSomethingWithRemoteValue();  
}); 

을하지만 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 

브라우저 JS 컴파일러와 NodeJS에 대한 jQuery의 javascript 코드는 같지 않아야합니까?

그렇지 않다면 주된 이유에 대해 누구나 생각할 수 있습니까? 감사!

답변

1

나는 노드의 자바 스크립트 환경과 너무 익숙하지 해요,하지만 아약스의 포인트는 페이지 새로 고침없이 자바 스크립트와 서버의 응답을 처리하는 것입니다. 노드를 실행하는 서버에서 일반 HTTP 요청 만 할 수 있습니다.

실제로 빠른 google 검색은 JQuery가 $ .ajax로 빌드하는 기본 XMLHttpRquest가 Node에 존재하지 않는다는 사실을 보여줍니다 (사실 Wikipedia article on XHR은 Browser 객체 모델의 일부임을 나타냅니다) 노드에서 사용할 수 있습니다 (노드의 http 요청 모듈을 사용하여 에뮬레이션 할 수는 있지만).

$ .ajax를 시험하려면 브라우저 환경에서 수행해야합니다. Stackoverflow와 같은 JQuery가 포함 된 웹 페이지에서 자바 스크립트 콘솔을 사용하거나 CDN에서 JQuery를 가져 오는 헤더에 Script 태그가 포함 된 테스트 HTML 페이지를 만들 수 있습니다.

-1

Node.js의 Javascript (서버 측)는 일반적인 클라이언트 측 javascript와는 조금 다른 언어입니다. 그것은 자바 스크립트이지만 다른 컨텍스트 환경이 있습니다.

jQuery는 클라이언트 측 자바 스크립트 만 지원합니다. 자세한 내용은 다음 링크를 참조하십시오.

Client side scripting and Server side scripting languages

+1

'다른 언어'가 아닙니다. 자바 스크립트입니다. 대부분의 사람들이 익숙한 DOM API와 네트워킹 API는 브라우저에만 존재하며 노드의 API는 노드에만 존재합니다. jQuery는 DOM API와 XMLHttpRequest를 사용할 수있는 곳이면 어디에서나 실행할 수 있습니다. – loganfsmyth

관련 문제