0
私は、なぜ私のNode.jsサービスが郵便配達員を使って非常にうまくいっているのかの理由を理解するために多くの時間を過ごしてきました。あなたが私のnode.jsサービスが完璧に動作しているのを見ることができます。しかし、jQueryのコードは、(GetAllNotifyTypesFunc()を呼び出す;)jquery ajaxリクエスト内でNode.jsをコールバックなしで使用するにはどうすればよいですか?
は私にエラーを与える:(コールバックせずに正しい郵便配達や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」ヘッダーが存在しません。 Origin 'http://127.0.0.1:13227'はアクセスが許可されていません。send @ jquery-2.0.3.min.js:6 Test.html:36エラーエラーNetworkError: 'XMLHttpRequest'で 'send'を実行できませんでした:読み込みに失敗しました 'http://127.0.0.1:5000/Notifies ?_ = 1482684143180 '。 – Penguen
@ Penguen - ブラウザにクロスオリジンのセキュリティ制限があるかどうか知っていますか?現在のページのドメイン以外のサイトからajax呼び出しを要求することは、そのサイトがクロスオリジン要求を明示的に有効にしていない限りは実行できません。 「node.js CORS」を検索すると、node.jsサーバーでクロスオリジン要求を有効にする方法を調べることができます。 Postmanは、ブラウザのようにクロスオリジンのリクエストを制限しません。 – jfriend00