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