混淆从控制器返回到Ajax的数据
问题描述:
我在我的一个咖啡脚本中发送了一个AJAX调用,它发送到控制器的一个方法。 AJAX调用看起来是这样的:混淆从控制器返回到Ajax的数据
auto = ->
$.ajax
url : '<method_name>'
type : 'POST'
data :
<variable_name>: $('element').val()
success: (data, status, response) ->
alert('Pass')
error: ->
alert('Fail')
我的控制器方法如下所示为:
def method
...
...
<book> object can be invalid object.
respond_to do |format|
format.json { render json: {book: {title: title}} }
end
end
现在,这种“书/标题”(从控制器)应该是在我的咖啡脚本可通过“数据'变量(在咖啡脚本中)。对?
我的问题是,它什么时候会出现在'错误'块(咖啡脚本)?我可以看到我的'book'对象是NULL(在控制器中),但它仍然在'成功'块(在咖啡脚本中)..我想如果json对象是NULL,它会进入'error'块。
答
每当ajax失败(例如,如果有路由错误或控制器方法中的任何错误等),那么只有它发生错误块。这里你的方法工作正常,没有错误,不管book
是不是NULL
。 您可以检查控制器,如果book对象为NULL,则返回一些标志,然后在AJAX成功中检查该变量。 例如:
def method
...
...
<book> object can be invalid object.
if book.nil?
format.json { render json: {is_data_null: true} }
else
respond_to do |format|
format.json { render json: {book: {title: title}} }
end
end
end
然后在AJAX成功块,你可以检查标志。
你在服务器端代码中的错误处理让你感到困惑。如果从服务器返回200状态,则Ajax成功将触发 – charlietfl 2015-03-31 18:30:01
如果下面我的答案解决了您的问题,请接受答案,否则请在评论中询问您的查询。 – 2015-05-24 07:56:07