如何在节点js中使用jquery?

时间:2013-09-21 17:57:36

标签: jquery node.js

我正在尝试在我的节点js文件中使用jquery。我已经安装了jquery模块。

当我访问该页面时,我收到错误:

    var jqxhr = jquery.$.getJSON( "favs.json", function() {
                         ^
TypeError: Cannot call method 'getJSON' of undefined
    at Server.<anonymous>
    at Server.EventEmitter.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2076:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:120:23)
    at Socket.socket.ondata (http.js:1966:22)
    at TCP.onread (net.js:525:27)

代码:

var http = require('http');
var jquery = require('jquery');

var PORT = 3000;

http.createServer(function(request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain', 'Access-Control-Allow-Origin': "*"});

    var jqxhr = jquery.$.getJSON( "favs.json", function() {
        console.log( "success" );
    })
    .done(function() {
        console.log( "second success" );
    })
    .fail(function() {
        console.log( "error" );
    })
    .always(function() {
        console.log( "complete" );
    });
}).listen(PORT);

console.log('Server running at http://127.0.0.1:' + PORT + '/');

有谁知道如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:5)

更新:对于最新版本(&gt; = 2.1.0),实例化的方式不同,现在还需要jsdom

var env = require('jsdom').env;
var html = '<html>...</html>';

env(html, function(err, window) {
  console.log(err);

  var $ = require('jquery')(window);
});

您没有正确实例化jQuery对象。这是应该如何做的:

var jquery = require('jquery');
var $ = jquery.create();

然后你可以使用你想要的方法:

$.getJSON('/resource.json', function() {
  console.log('success');
})
  .done(function() {
    console.log('second success');
  })
  .fail(function() {
    console.log('error');
  })
  .always(function() {
    console.log('complete');
  });