Ich bin .net Entwickler. Ich entschied mich, Node.js zu lernen, indem ich ein Beispiel benutzte. Ich habe einen node.js-Dienst erstellt, um Daten aus der Mongo-Datenbank zu sammeln. Und dann habe ich eine HTML-Webseite. Ich habe einen einfachen jquery-Code verwendet, um diesen node.js-Webdienst zu erhalten. Aber ich habe diesen Fehler behoben: Die angeforderte JSON-Analyse ist fehlgeschlagen.Wie Node.js-Dienst in Jquery-Skript aufrufen?
Mein Db:
{ "_id": ObjectId ("58568264477db6913051a0cf"), "Name": "yusuf" }
{ "_id": ObjectId ("58568381477db6913051a0d0") , "Name": "Leyla" }
Mein Server Code: (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.send(result);
}
})
})
});
var port = Number(process.env.PORT || 5000);
app.listen(port, function() {
console.log("Listening on " + port);
})
JQuery:
var GetAllNotifyTypesFunc = function() {
console.log("notify");
$.ajax({
url: 'http://127.0.0.1:5000/Notifies',
type: 'GET',
dataType: 'jsonp',
async: false,
contentType: 'application/json; charset=utf-8',
success: function (data) {
var str = '';
console.log(data);
$.each(data, function (idx, elem) {
console.log(elem.Name);
str += "\"" + elem.Name + "\"" + " : " + "{ \"!type\": \"bool\" }" + ",";
});
str = str.substring(0, str.length - 1);;
str = "{" + str + "}";
localStorage.removeItem("alarms");
localStorage.setItem('alarms', str);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
console.log(msg);
}
Das obige Code Rückkehr mir dieser Fehler: Gewünscht JSON Parse fehlgeschlagen.
1. Warum "Jsonp" als Accept-Header verwenden? Wenn Sie sagen: "Okay, die Antwort wäre" application/jsonp "** Sie müssen einen Rückruf bereitstellen, um die Antwort zu dekodieren **. Denken Sie daran, json! = Jsonp. 2. Wenn Ihr Dienst in einer anderen Domäne ist, aktivieren Sie einfach CORS Server für Ihre Clientdomäne und setzen Sie 'dataType' auf' json'. Für weitere Informationen: 'Request JSON parse failed' geschieht, weil Sie den Callback für die JSONP-Antwort nicht angeben. –