我在JS中有以下Api:
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发布并使用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但没有返回数据并且调用失败函数
答案 0 :(得分:2)
您的请求正在调用" / api / books"而且你只是在听#34; / books"
将您的客户端代码请求网址修改为:
$.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");});
});
答案 1 :(得分:0)
您是否尝试过添加dataType: "json"
?您还应该在发布之前尝试在对象上运行JSON.stringify()
。