Node.js快递jquery ajax请求不工作

使用REST风格的api,当我在我的浏览器中访问96.126.111.211/getLeaderBoard

它工作正常,并给我从我的mongo数据库的JSON数据。

虽然当我尝试像这样的http://jsfiddle.net/yVQ5T/ jquery ajax请求我得到一个jsonp错误

错误:没有调用jQuery171037622810900211334_1363808084624

这是服务器端的代码

getLeaderBoard(req, res) { this.db.collection(this.settings.userTable, function(err, collection) => { collection.find().toArray(function(err, items) { res.writeHead(200, {'Content-Type': 'application/javascript'}); res.write(JSON.stringify(items)); res.end(); }); }); } 

你的url服务于普通的JSON而不是JSONP,你必须把它放在callback函数的调用中,例如

 jQuery171037622810900211334_1363808084624 ([{"userId":"100821494565115211032","winCount":4,"_id":"5148caa1a1651dff12000002"}]); 

由于callback名称是dynamic生成的,因此您必须从请求中读取callback名称。

如果您使用Express 3.0,则可以查看与response.jsonp相同的response.json 。 如果您从另一个域访问您的服务器,那么您将不得不使用JSONP协议,因为浏览器实施了跨域请求限制作为安全措施。

在Express 2.x中,您将需要通过app.enabled("jsonp callback")启用JSONP响应处理,然后使用response.json

3.0 Api

2.0 Api