我是前端和rails的新手。我对我正在编写的控制器动作感到困惑。基本上,此操作充当将通过ajax轮询调用的端点。在网页上,按钮将有一个remote: true
,并在相应的js文件中调用$ajax。
控制器动作在被调用时只提供2个数字。前端将划分2并计算完成百分比或检查我可以提供划分。我已经说到这里了。我如何在jquery或咖啡中编写ajax投票?我是否正确格式化json响应?ajax将如何解析它?
class FileProcessorController < ApplicationController
# Below Contains the button. Coffeescript file will be associated for this page
# jquery/coffeescript will contain an ajax poll on get_progress action
def upload
# Renders upload.html.erb by default which contains the button
end
# This endpoint will be called by AJAX poll in the controller's cofeescript file.
def get_progress
redis_key = session[:redis_key]
total_records = session[:file_records]
done_cnt = $redis.get(redis_key)
resp = {total_amount: total_records amount_done: done_cnt}
respond_to |format| do
format.json {resp.to_json}
format.js
end
end
end
试试这个站点的代码片段:
$.ajax '/',
type: 'GET'
dataType: 'html'
error: (jqXHR, textStatus, errorThrown) ->
$('body').append "AJAX Error: #{textStatus}"
success: (data, textStatus, jqXHR) ->
$('body').append "Successful AJAX call: #{data}"
然后你可以处理在成功回调中添加/更改值。希望有帮助:-)
下面是我使用的代码片段:
target
=您在服务器上点击的url -包括任何参数。
响应返回到data
对象,您需要将其解析为JSON,以便您可以直接访问响应中的项。
下面的示例可能返回类似{"status":true,"message":"Something happened"}
的JSON。解析后,我可以得到json_response.message = "Something happened"
。
$.ajax({
url: target,
beforeSend: function( xhr ) {xhr.overrideMimeType( "text/plain; charset=x-user-defined" );}
})
.done(function( data ) {
json_response = JSON.parse(data);
alert(json_response.message);
})