【发布时间】:2011-10-07 20:41:54
【问题描述】:
我一直在尝试使用 JSONP 通过客户端调用(在不同的端口上)从服务器获取 JSON 对象。但是,因为我的服务器是使用 Node.js 和 Express 在 javascript 中实现的,所以我无法在服务器上使用 Javascript 的 JSONP 找到很多东西,因为我发现大多数网站都使用 php 作为服务器端代码。
我认为问题在于我如何设置与回调相关的 url,我对此有点模糊,因为它对我来说是新的。
在服务器上:
//Setting up server stuff
var express = require('express'),
app = express.createServer();
app.use(express.logger());
//Making a connection to the mongoDB to get the data that I want to display in the JSON object
new Db('prism',
new Server("127.0.0.1", 27017, {auto_reconnect: false}), {}).open(function(err, db) {
app.get('/getData', function(req, res) {
console.log('JSONPCALLBACK CALLED WITH RETURNDATA PASSED IN; SERVER SIDE');
if (typeof callback == 'function') {
console.log('callback is defined');
callback(returnData);
}
else {
console.log('callback is not defined');
}
}
});
在客户端:
$.ajaxSetup({ cache : false });
$.getJSON('http://127.0.0.1:1337/getData&callback=?', function(rtndata) {
console.log('SUCCESS');
console.log(rtndata);
});
由标准标签嵌入。
但我得到了错误:
GET http://127.0.0.1:1337/getData&callback=jQuery16108897686484269798_1311007334273?_=1311007334342 404 (Not Found)
服务器在端口 1337 上,而客户端通过 localhost:8888 上的 MAMP 运行。我不确定它是否甚至是与本地主机相关的问题,因为我已经尝试让这个设置运行几天了。
我认为这个问题与没有将这一行(用 php 编写)写入我的服务器端 Javascript 中有关。我发现的大多数 JSONP 示例都有这样的内容。但我不确定。
if ($GET['callback'] != '')
$json = $GET['callback']."( $json )";
return $json;
任何帮助将不胜感激。我提前为过于冗长道歉。
最好的, 聪
【问题讨论】:
标签: javascript node.js jsonp express