我一直在尝试使用JSONP通过客户端调用(在不同的端口)从服务器获取JSON对象。但是,因为我的服务器是使用Node.js和Express在JavaScript中实现的,所以我一直无法在服务器上使用Javascript来查找JSONP上的大部分网站,因为我发现大多数网站使用php代替服务器端代码。JSONP调用与服务器端语言为Javascript
我相信这个问题是关于如何设置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,而客户端通过甲基苯丙胺在本地主机上运行:8888。我不确定它是否与本地主机相关的问题,因为我一直试图让这个设置运行几天。
我相信这个问题与不将这行代码写入我的服务器端JavaScript中,这是在PHP中。我发现的大部分JSONP例子都是这样的。但我不确定。
if ($GET['callback'] != '')
$json = $GET['callback']."($json)";
return $json;
任何帮助将不胜感激。我为超级冗长而道歉。
最好成绩, 聪
对不起,但我将端口设置为1337;我只放入了代码片段。我有行:app.listen(1337);.端口27017用于连接mongoDB以获取数据。我不确定它是如何工作的,因为我有一个单独的终端作为mongoDB的服务器运行。从404开始,当我访问url:http://127.0.0.1:1337/getData/时,它确实显示了JSON obj,但是还显示了通知:Resource解释为Document,但是使用MIME类型application/json传输。我尝试了你的建议,但我得到了同样的问题。对不起,丑陋的格式。 –