我试图通过在一台服务器上运行的Node.js应用程序将geoJSON数据传递给在另一台服务器上运行的Web应用程序。我发现了很多其他问题,但是我从他们那里尝试过的任何问题似乎都解决了我的问题。
在Chrome上使用RestEasy扩展程序我能够毫无问题地使用我的所有RESTapi调用。 GET,PUT,DELETE和POST。将网址粘贴到浏览器中还会返回Chrome控制台报告中的geoJSON数据页面:
Resource interpreted as Document but transferred with MIME type application/json:
这是我第一次写这样的内容,我希望将这些数据提取到客户端webapp以将geoJSON数据呈现给地图。
首先我明白跨域设置要求我使用JSONP,而我不熟悉我认为第一步是接收它,然后重新加工到geojson以便地图理解。 我在我的Node.js应用程序中安装了CORS,它似乎解决了我的跨域问题,但现在我收到了这个jQuery错误。
这是我的客户端ajax功能:
$(document).ready(function ()
{
console.log("Running AJAX");
$.ajax(
{
type: "GET",
contentType: "application/jsonp; charset=utf-8",
url: myUrl,
cache: false,
timeout: 5000,
dataType: "jsonp",
crossDomain: true,
data: "{}",
success: function (data)
{
// do my stuff
console.log("Reading Data");
console.log(data);
},
error: function (xhr, ajaxOptions, thrownError)
{
console.log("http Status Response: " + xhr.status);
console.log(thrownError);
}
});
});
这是我在服务器上的Node.js应用程序:
app.get('/api/objects', function(req, res)
{
Object.getObjects(function(err, objects)
{
if (err)
{
res.json(err);
}
res.jsonp(objects);
});
});
以下是Chrome控制台的错误:
http Status Response: 200
Error: jQuery31108564601072970404_1485231436558 was not called
at Function.error (jquery.min.js:2)
at b.converters.script json (jquery.min.js:4)
at Nb (jquery.min.js:4)
at A (jquery.min.js:4)
at HTMLScriptElement.c (jquery.min.js:4)
at HTMLScriptElement.dispatch (jquery.min.js:3)
at HTMLScriptElement.q.handle (jquery.min.js:3)
答案 0 :(得分:0)
发现了这个问题。 事实证明重新启动apache(运行node.js应用程序的服务器)不会重新启动node.js应用程序。 所以我在服务器上的更改从未被应用过。
以下是重启node.js应用后控制台现在读取的内容。经验教训。
Reading Data
Array[16]
0: Object__v: 0_id: "58815cd0110dcc3b1e51d411"geometry: Objectproperties: Objecttype: "Feature"__proto__:
Object1:
Object2:
Object3:
Object4:
Object5:
Object6:
Object7:
Object8:
Object9:
Object10:
Object11:
Object12:
Object13:
Object14:
Object15:
Object
length: 16
__proto__: Array[0]