我正在尝试进行简单的ajax api调用,但即使在成功调用之后,我的jQuery .done()
和.always()
回调也永远不会运行。
这是我打电话的地方:
join: (e) ->
e.preventDefault()
email = $('.email').val()
$.ajax(
type: 'POST'
url: '/api/email'
data: { email: email }
).done((msg) ->
console.log 'POST success'
console.log msg
).always((msg) ->
console.log 'Always'
)
这是我的控制器中的post
:
app.post '/api/email', (req, res) ->
console.log req.body
我的服务器正在从api调用中正确接收数据的问题,但我的jQuery回调永远不会被解雇。
{ email: 'test@email.com' } // What gets logged server-side
修改
所以我尝试添加.fail()
方法并稍微调整代码以查看我的语法是否错误,但这段新代码仍然像旧代码一样运行。
request = $.ajax(
type: 'POST'
url: '/api/email/beta'
data: { email: email }
)
request.done( (msg) ->
console.log 'POST success'
console.log msg
)
request.fail( (msg) ->
console.log 'POST Fail'
console.log msg
)
request.always( () ->
console.log 'Always'
)
编辑2
我刚刚意识到POST
实际上是“失败”,但是在4.1分钟之后......但奇怪的是我仍然在req.body对象中获取数据......?< / p>
以下是Chrome工具的网络截图:
答案 0 :(得分:1)
看起来您在服务器上收到了请求(并记录了它),但之后却没有做任何事情。这最终导致超时。将其更改为
app.post '/api/email', (req, res) ->
console.log req.body
res.write(JSON.stringify({success:true})/* or whatever*/);
res.end();
也许你在res
对象上使用了一些带有特殊方法的框架;如果是这样,那么查看有关如何回答请求的文档。
答案 1 :(得分:0)
试试这样:
$.ajax({
type: 'POST'
url: '/api/email'
data: { email: email}
}).done((msg) ->
console.log 'POST success'
console.log msg
).always((msg) ->
console.log 'Always'
)