2015-04-21 144 views
0

我在JS以下API:Nodejs和expressjs。阿賈克斯get請求不返回數據

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");}); 
    }); 

發帖時使用招,讓使用Chrome瀏覽器工作正常。但是,當我嘗試獲取和使用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. "); 
         }); 

失敗/錯誤回調被激發。我試過指定contentType或刪除它,但無濟於事。

當調用POST,狀態代碼是200,但沒有數據返回,並調用失敗功能

+1

您的請求調用「/ API /書」,你只能聽「/書籍」 – nada

+1

你有沒有調試客戶端和服務器的結果,以確保它有什麼數據? –

+0

İlkerKorkut:調試服務器將是一個任務,因爲之前從未調試節點。納達:事實並非如此。我打電話的網址是正確的 – user1809104

回答

0

您是否嘗試過加入dataType: "json"?在發佈之前,您還應該嘗試在對象上運行JSON.stringify()

2

您的請求調用「/ API /書」,你只能聽「/書籍」

修改客戶端代碼請求網址是:

$.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. "); 
         }); 

或修改服務器代碼到:

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

也許他正在使用前綴路由器'app.use('/ api',router);'? –

+0

所以也許最好在他的問題中指定這個:D – nada

+0

要調用的正確url是:http:// localhost:8000/api/books。我使用前綴路由器。如上所述,這似乎可以在其他地方工作,但當使用jquery – user1809104