2015-04-21 5 views
0

У меня есть следующее Api в JS:Nodejs и expressjs. Ajax получить запрос не возвращает данные

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

, который отлично работает, когда я отправляю с помощью Fiddler и получить с помощью хромированного браузера. Но когда я пытаюсь получить и отправить с помощью 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

İlker Korkut: Отладка сервера была бы миссией, так как ive никогда не отлаживал узел раньше. Нада: это не так. URL-адрес, который я вызываю, правильный – user1809104

ответ

0

Вы пробовали добавлять dataType: "json"? Вы должны также попробовать запустить JSON.stringify() на свой объект перед публикацией.

2

ваш запрос вызова «/ API/книги», и вы слушаете только «/ книги»

Измените свой клиентский код URL запроса к этому:

$.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