ajax的使用依赖于xmlHttpRequest对象。node及jsdom中均未实现此对象。要在node中实现ajax操作,应该有两种思路,一是重写$.ajax,使其不再依赖xhr;另一种方法则是为ajax实现一个node版本的xhr。
#### 参考1: sushi-ajax
sushi-ajax重写了ajax方法,参考其ajax-server.js。
参考2: node-XMLHttpRequest
node-XMLHttpRequest在node端实现了一个xhr对象,要让jQuery能够正常使用ajax,只需要在得到jsdom生成的window对象后,加上这句代码:
window.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
参考3: w3c-xmlhttprequest
w3c-xmlhttprequest用法与node-XMLHttpRequest基本相同,暂不清楚两者区别。
2014年3月3日更新
对node-XMLHttpRequest和w3c-xmlhttpquest分别做了测试,后者能正常支撑$.ajax,前者无法正常运作,在xhr.send()阶段抛出协议错误。