我有一个AngularJS前端,与Node/Express/MySQL后端通信,除了POST请求外,所有请求都正常工作。这是我的Angular代码:
var Data = $resource('http://127.0.0.1:9001/api/data_user');
var newData = new Data({'data_id': data_id});
newData.test = 'whatever';
newData.$save(function (data) {
console.log(data);
});
我已经按照通常的调试步骤,将所有代码删除直到找到问题所在。但是即使这样也没有起作用(来自客户端):
app.post('/api/:table', function (req, res) {
res.send(200);
});
我之前在那里有一个MySQL更新语句,它被正确执行(带错误检查等),但前端正在等待响应:
(Chrome Dev 工具): data_user /api POST (等待) 待定
令人讨厌的是,使用 CURL 没有问题:
$ curl -i -X POST http://127.0.0.1:9001/api/data_user --data '{}' -H "Content-Type: application/json"
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/plain
Content-Length: 2
Date: Mon, 31 Mar 2014 09:54:21 GMT
Connection: keep-alive
有人有任何想法吗?如果需要,可以发布更多代码。
var Data = $resource('http://127.0.0.1:9001/api/data_user);
是否也缺少了一个冒号? - waynevar Data = $resource('http://127.0.0.1:9001/api/data_' + table);
但前端和后端都没有JavaScript错误。 - welalehttp://127.0.0.1:9001/api/data_user
。也许你可以添加通配符app.post('*')
来捕获所有请求并打印一些有用的跟踪信息。 - wayneres.json()
而不是res.send()
?也许Angular对于HTML头部接受的内容比较挑剔?或者在Node中设置内容类型...?http://expressjs.com/3x/api.html#res.json - AlexMA