2015-04-21 4 views
0

je l'Api suivant JS:Nodejs et expressjs. Ajax requête get pas de données retour

router.route('/books') 
    .get(function(req,res){ 
     Repository.getAll().done(function(result){ res.json(result);},function(err){res.send(err);}); 
    }) 
    .post(function(req,res){ 
     Repository.save(req.body).done(function(object){ res.json(object); },function(err){res.send("error seems to have occured");}); 
    }); 

qui fonctionne très bien quand je poste en utilisant Fiddler et obtenir l'aide du navigateur chrome. Mais lorsque je tente d'obtenir et de publier en utilisant jquery:

$.ajax({ 
           type: "POST", 
           url: "http://localhost:8000/api/books", 
           data: { "title":"My name is","releaseYear":"1989","director":"me","genre":"horror" } 
          }).done(function(data) { 
          //alert("Success."); 
          console.log("success"); 
         }).error(function(data, err, e, o) { 

          console.log("error"); 
          //alert("Sorry. Server unavailable. "); 
         }); 

          $.ajax({ 
           type: "GET", 
           url: "http://localhost:8000/api/books", 
           contentType: "application/json" 
          }).done(function(data) { 
          //alert("Success."); 
          console.log("success"); 
         }).error(function(data, err, e, o) { 

          console.log("error"); 
          //alert("Sorry. Server unavailable. "); 
         }); 

Le rappel d'échec/d'erreur est déclenché. J'ai essayé de spécifier le contentType ou de le supprimer mais en vain.

Lors de l'appel POST, le code d'état est de 200 mais aucune donnée est retournée et les appels échouent fonction

+1

votre demande appelle «/api/livres » et que vous écoutez seulement «/Livres » – nada

+1

Avez-vous débogués les résultats client et serveur pour vous qu'il a des données? –

+0

İlker Korkut: Déboguer le serveur serait une mission comme jamais un nœud débogué auparavant. Nada: ce n'est pas le cas. L'URL que j'appelle est correcte. – user1809104

Répondre

0

Avez-vous essayé d'ajouter dataType: "json"? Vous devriez également essayer d'exécuter JSON.stringify() sur votre objet avant de poster.

2

votre demande appelle "/ api/livres" et que vous écoutez seulement "/ Livres"

Modifier votre demande de code client URL pour que:

$.ajax({ 
           type: "POST", 
           url: "http://localhost:8000/books", 
           data: { "title":"My name is","releaseYear":"1989","director":"me","genre":"horror" } 
          }).done(function(data) { 
          //alert("Success."); 
          console.log("success"); 
         }).error(function(data, err, e, o) { 

          console.log("error"); 
          //alert("Sorry. Server unavailable. "); 
         }); 

          $.ajax({ 
           type: "GET", 
           url: "http://localhost:8000/books", 
           contentType: "application/json" 
          }).done(function(data) { 
          //alert("Success."); 
          console.log("success"); 
         }).error(function(data, err, e, o) { 

          console.log("error"); 
          //alert("Sorry. Server unavailable. "); 
         }); 

Ou modifier votre code serveur que :

router.route('/api/books') 
    .get(function(req,res){ 
     Repository.getAll().done(function(result){ res.json(result);},function(err){res.send(err);}); 
    }) 
    .post(function(req,res){ 
     Repository.save(req.body).done(function(object){ res.json(object); },function(err){res.send("error seems to have occured");}); 
    }); 
+0

Peut-être utilise-t-il des routeurs préfixés 'app.use ('/ api', router);'? –

+0

alors peut-être est mieux de spécifier cela dans sa question: D – nada

+0

L'URL correcte à appeler est: http: // localhost: 8000/api/books. J'utilise des routeurs préfixés. Comme indiqué, cela semble fonctionner partout ailleurs mais quand appelé en utilisant jquery – user1809104