【发布时间】:2024-08-01 01:00:01
【问题描述】:
这是我用 HTML 制作的一个简单的告诉朋友表单,它正确地将数据发送回我的服务器并正确提交。
这是 javascript 代码(在 CoffeeScript 中):
$('#tell-a-friend-form').submit (e) ->
e.preventDefault()
console.log "submitted form."
$.ajax
url: 'home/tellafriend'
type: 'POST'
data:
name: $(this).find("input[name='name']").val()
emails: $(this).find("input[name='emails']").val()
message: $(this).find("textarea[name='message']").val()
success: (result) ->
alert("ok")
$('#tell-a-friend-form').find(".loading-icon").hide()
error: (result) ->
alert("Sorry, we couldn't send your message.")
$('#tell-a-friend-form').find(".loading-icon").hide()
$('.tell-a-friend-submit').removeAttr("disabled")
$(this).find(".tell-a-friend-submit").attr("disabled", "disabled")
$(this).find(".loading-icon").show()
现在,在控制器中,我根本不需要返回任何消息,除了可能是“已发送成功”类型的布尔值,因此客户端 javascript 可以知道是“成功”还是“错误”。
目前,客户端每次都会触发“错误”。
这是我的控制器代码:
def tellafriend
#send the actual email message. to be implemented.
respond_to do |format|
format.json { render :json => "success" }
end
end
我在控制器端做错了什么?我确定问题出在这里。如果我想触发“成功”位,我需要返回什么?
【问题讨论】:
-
你什么都不能返回...无论如何,ajax 请求是否命中了控制器代码?我认为问题不存在。
-
我认为 Ruby 总是返回最后一行。这对我没有帮助。编辑:Yes 控制器代码与适当的数据一起被命中。问题在于Controller返回。
-
哦,我根本不知道
Ruby... -
当我想在 Rails 中不带任何负载的情况下成功返回时,我喜欢使用
head :ok,它只会将带有 HTTP 成功代码的标头返回给客户端,但不会发送任何内容身体。但是,我不能说为什么你的方法失败了。
标签: jquery ajax json forms coffeescript