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()
阶段抛出协议错误。