繁体   English   中英

ajax GET json数据发送到控制器问题

[英]ajax GET json data sending to controller problems

我打电话

$.get('/profile', {'data_id': 0}, null, 'script');

当发生特定事件时,在我的profile/index.html.haml 假设在传递json数据时加载profile/index.js.erb 在我的个人资料控制器的index操作中,我有

@dataid = params[:data_id]
if @dataid == 0
  #do something, ie set variables that index.js.erb needs
else
  #do something else
end

但是, if语句似乎不起作用,因此我认为我的js.erb文件无法正确加载(根本无法加载)。

但是,如果我做if !dataid.nil? 而不是== 0 (or some other value) ,它的工作方式类似于在插入if语句/js.erb之前,因此必须确保dataid是某个值...

另外,如果我不使用if语句, if在我的js.erb我执行dataid = <%= raw @dataid %>; alert(dataid); dataid = <%= raw @dataid %>; alert(dataid); ,一切正常,警报正确-dataid为0。那么为什么似乎首先设置raw @dataid的控制器不知道@dataid的值是什么? 我很困惑

主要目的是除非需要(如data_id指定),否则不执行控制器中的所有操作。 同样以这种方式,我认为我可以在js.erb中执行相同的操作-仅基于此参数运行我需要的部分。

通过HTTP来的所有内容都将以字符串形式到达。 如果与“ 0”比较,则很有可能比较相等。 在您的控制器代码中尝试以下操作:

Rails.logger.debug "All params are:\n#{params.inspect}"
Rails.logger.debug "I got params[:data_id] = '#{@dataid}'"
Rails.logger.debug "The type is: #{@dataid.class}"
Rails.logger.debug "Comparison yields: #{@dataid == 0}"

然后查看日志。 您会明白我在说什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM