2

使用 RESTful 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();
        });
    });
}
4

2 回答 2

1

您的网址提供常规 JSON 而不是 JSONP,您必须将其放在对回调函数的调用中,例如

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

由于回调名称是动态生成的,因此您必须从请求中读取它们。

于 2013-03-20T19:43:04.397 回答
1

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

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

3.0 API

2.0 API

于 2013-03-20T19:45:48.930 回答