У меня было много времени, чтобы понять причину. Почему мой сервис Node.js работает очень хорошо, используя почтальон. Если вы посмотрите ниже, вы увидите, что моя служба node.js работает идеально. Но Jquery код (вызов GetAllNotifyTypesFunc();)Как использовать Node.js без обратного вызова внутри запроса jquery ajax?
дает мне ошибку: (как назвать правильно как почтальона и JQuery без обратных вызовов?)
Node.js:
'use strict';
var express = require("express");
var app = express();
var MongoClient = require('mongodb').MongoClient;
var router = express.Router();
app.get('/Notifies', function (req, res) {
MongoClient.connect('mongodb://127.0.0.1:27017/Test', function (err, db) {
if (err) throw err;
var coll = db.collection('Notifies');
coll.find({}).toArray(function (err, result) {
if (err) {
res.send(err);
} else {
// res.writeHead(200, {
// 'Content-Type': 'application/json'
// });
// res.end('callback(\'' + JSON.stringify(result) + '\')');
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end(JSON.stringify(result));
// res.json(result);
}
})
})
});
var port = Number(process.env.PORT || 5000);
app.listen(port, function() {
console.log("Listening on " + port);
})
, если я использую Почтальон:
$(function() {
GetAllNotifyTypesFunc();
});
var GetAllNotifyTypesFunc = function() {
console.log("notify");
$.ajax({
url: 'http://127.0.0.1:5000/Notifies',
dataType: "jsonp",
async: false,
//jsonpCallback: "callback",
cache: false,
timeout: 5000,
success: function (data) {
console.log(data);
console.log(JSON.parse(data));
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});
}
насчет кросс домена? без jsonp, могу ли я обрабатывать перекрестный домен? – Penguen
jquery-2.0.3.min.js: 6 XMLHttpRequest не может загрузить http://127.0.0.1:5000/Notifies?_=1482684143180. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный адрес http://127.0.0.1:13227 'не допускается. send @ jquery-2.0.3.min.js: 6 Test.html: 36 error error NetworkError: не удалось выполнить 'send' on 'XMLHttpRequest': не удалось загрузить 'http://127.0.0.1:5000/Notifies ? _ = 1482684143180' . – Penguen
@Penguen - Знаете ли вы, какие ограничения безопасности для кросс-оригинала находятся в браузере? Вы не можете запрашивать вызовы ajax с сайта, отличного от домена текущей страницы, если этот сайт явно не разрешает запросы на перекрестный поиск. Вы можете найти «node.js CORS», чтобы узнать, как включить запросы кросс-генерации на вашем сервере node.js. Почтальон не ограничивает запросы на перекрестный поиск, как это делает браузер. – jfriend00