【发布时间】:2013-07-15 04:13:19
【问题描述】:
我正在尝试进行简单的 ajax api 调用,但我的 jQuery .done() 和 .always() 回调永远不会运行,即使在成功调用之后也是如此。
这里是我调用 api 的地方:
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 对象中获取数据......?
这是来自 chrome 工具的网络截图:
【问题讨论】:
-
你有没有尝试捕捉“失败”?
-
什么是响应状态以及控制台中的任何错误
-
@tilix,看看编辑
-
@ArunPJohny,chrome 工具或我的控制台都没有错误。记录的内容是:
{ email: '' },这是预期的,因为这是我通过网络发送的内容 -
@ConnorBlack:你的服务器在哪里响应?网络检查员会告诉你什么?
标签: javascript api jquery coffeescript