2016-04-28 16 views
0

私はNode.jsので作られたこのAPIは、これは、それだけでクレートポストシンプルでありますノード、JSとjQueryではないローカルホスト上で作業

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var Posts = require('./models/posts'); 

mongoose.connect('mongodb://localhost/api', function(err) { 
    if(err) { 
    console.log("Error with mongodb: " + err); 
    } 
}); 
app.use(bodyParser()); 

var port = process.env.PORT || 3000; 

var router = express.Router(); 

router.get('/', function(req, res){ 
    res.json({message: 'It\'s working'}); 
}); 

router.route('/posts') 
    .get(function(req, res) { 
    Posts.find(function(err, data) { 
     if(err) { 
     res.send(err); 
     } 
     res.json(data); 
    }); 
    }) 
    .post(function(req, res) { 
    var posts = new Posts(); 
    posts.title = req.body.title; 
    posts.description = req.body.description; 
    posts.content = req.body.content; 
    posts.save(function(err) { 
     if(err) { 
     res.send(err); 
     } 
     res.json({message: "Post saved!"}); 
    }); 
    }); 

router.route('/posts/:id') 
    .get(function(req, res){ 
    Posts.findById(req.param.id, function(err, data) { 
     if(err) { 
     res.send(err); 
     } 
     res.json(data); 
    }); 
    }) 
    .put(function(req, res) { 
    Posts.findById(req.params.id, function(err, data) { 
    if(err) { 
    res.send(err); 
    } 
    data.nome = req.body.nome; 
    data.description = req.body.description; 
    data.content = req.body.content; 
    data.date = Date.now; 
    data.save(function(err) { 
     if(err) { 
      res.send(err); 
     } 
     res.json({message: 'Post updated!'}); 
     }); 
    }); 
    }) 
    .delete(function(req, res) { 
    Posts.remove({_id: req.params.id}, function(err, data) { 
     if(err) { 
     res.send(err); 
     } 
     res.json({message: 'Post deleted!'}); 
    }); 
    }); 

app.use('/api', router); 
app.listen(port, function() { 
    console.log("Server running on: " + port); 
}); 

そして、私は

$.ajax({ 
    url: 'http://localhost:3000/api/posts/', 
    type: "GET", 
    dataType: 'jsonp', 
    success: function(returnit) { 
    $.each(returnit.posts, function() { 
     var post = this; 
     $('<p>').text(post.title).appendTo('.blog--area'); 
    }); 
    } 
}); 
jQueryの

にこのコードを持っています

誰かが私に何が起こっているのか、なぜ起こっているのか説明できますか?私はJavaScript上で新しく、フレームワークです。コンソールで確認すると、何も言いません。

可能であれば、いくつかのヒントを教えてください。おかげで...

編集

私は、エラーを言及するのを忘れて、それがポストを示していません。

+0

返されるエラーは何ですか? – FiringSquadWitness

+0

投稿を表示しません – joaomarcuslf

+0

デバッグには、コードに 'console.logs'を追加してみてください。例えば。 'Post.find(function(err、data){' 'の後に' console.log( "data from db"データ)をコールバック関数に追加してください。 : 'console.log(" received data "、returnIt)'など。少なくともこのようにすれば、問題を切り分けることができます。 – Anastasia

答えて

0

クロスドメインコールでJSONPを使用しています。これには、Express部分(サーバー)にいくつかの変更が必要です。変更res.json(data)

res.jsonp(data)へ例:

router.route('/posts') 
    .get(function(req, res) { 
    Posts.find(function(err, data) { 
     if(err) { 
     res.send(err); 
     } 
     res.jsonp(data); //changed 
    }); 
    }) 

説明:APIサーバーに対して行われたAJAX呼び出しのあなたのデータ型として は、クライアント側がコールバック関数にラップされたレスポンスを探しているjsonpです。

JSONPはJSONレスポンスをJavaScript関数にラップし、スクリプトとしてクライアントに返します。スクリプトは同じOrigin Policyの対象ではなく、クライアントにロードされると、その関数は含まれているJSONオブジェクトのように機能します。

callback_Name({"title": "Foo", "description": "HelloWorld", "content": "OK"})

しかしなっている:

{"title": "Foo", "description": "HelloWorld", "content": "OK"}

したがって1はRESを使用しなければならないJSONP応答のためのあなたの場合、あなたのクライアントは、このような何かを探しているに

.jsonp in express。

関連する問題