2016-12-24 4 views
0

私は.net開発者です。私はサンプルを使ってNode.jsを学ぶことにしました。 Mongo dbデータベースからデータを収集するnode.jsサービスを作成しました。そして、私はHTMLのウェブページを持っています。私は単純なjqueryコードを使ってこのnode.js Webサービスを取得しました。しかし、私はこのエラーを熱くしました:要求されたJSON解析が失敗しました。jqueryスクリプトの中でNode.jsサービスを呼び出す方法は?

マイDbは:

{ "_id":のObjectId( "58568264477db6913051a0cf")、 "名前": "ユスフ" }

{ "_id":のObjectId( "58568381477db6913051a0d0") 、 "名前": "レイラ" }

マイServerのコード:(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); 
      } 

私にはこの上記のコードリターンこのエラー:要求されたJSONの解析に失敗しました。

+0

1. Acceptヘッダーとして 'jsonp'を使う理由は何ですか? "OK"と答えると 'application/jsonp'となるでしょう** **レスポンスをデコードするためにコールバックを提供する必要があります** .json!= jsonpを覚えておいてください2.あなたのサービスが別のドメインにある場合は、 JSONPレスポンスのコールバックを指定していないため、 'Request JSON parse failed 'が発生します。 –

答えて

1

'parseerror'が生成されるため、正しいJSON形式ではないデータが取得されると思います。
は、HTTPクライアントのようにポストマン使用を動作していない場合は
NodeJSコードでres.json代わりのres.sendを使用してみてくださいと「/通知し」の応答を確認してください。このようにJSON parserを使用して、応答が正しいJSON形式であるかどうかを確認することができます。

関連する問題