Jquery Rails表单标记远程json

Jquery Rails表单标记远程json,jquery,ruby-on-rails,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby On Rails 3,我的表格是这样设置的 = form_tag stocks_path, method: 'get', remote: true, class: "form-horizontal" do %legend Define Your Universe .control-group = label_tag :min_cap, "Min Cap", class: "control-label" .controls = text_fie

我的表格是这样设置的

= form_tag stocks_path, method: 'get', remote: true, class: "form-horizontal" do
      %legend Define Your Universe
      .control-group
        = label_tag :min_cap, "Min Cap", class: "control-label"
        .controls
          = text_field_tag :min_cap, params[:min_cap], size: 5, maxlength: 6, class: "input-small"
      .control-group
        = label_tag :max_cap, "Max Cap", class: "control-label"
        .controls
          = text_field_tag :max_cap, params[:max_cap], size: 5, maxlength: 6, class: "input-small"
      .control-group
        = label_tag :size, "Size", class: "control-label"
        .controls
          = text_field_tag :size, params[:size], size: 5, maxlength: 2, class: "input-small"
      .form-actions
        = submit_tag "Submit", class: "btn btn-primary"
然后我的控制器中有:

respond_to do |format|
      format.html
      format.js { render :json => {:stocks=>@stocks, :stats => @stats}
      # By default, json method does not know about extra none activerecord attributes!
    end
@stats是一个数字数组。 最后,在我的javascript中

  $("form").bind 'ajax:success', (xhr, data, status) -> 
    stocks = $.parseJSON(data.stocks)
然后这里的问题是data.stocks不会将stocks对象作为json获取。在我的控制台中,我在
stocks=$.parseJSON(data.stocks)
行中放置了一个断点。然而,回调函数从未被调用,所以我不知道到底发生了什么。但是我从网络选项卡(在chrome中)看到表单确实被提交并返回了所需的javascript对象。 我想知道为什么success的回调函数没有真正被调用


谢谢你的帮助。

改用
format.json{etc..}
;检查响应头中的差异。

改用
format.json{etc..}
;检查响应标题中的差异。

完成所有工作后,确定。我想出了解决办法。这很奇怪,我仍然找不到一个很好的解释。我将渲染行更改为
format.js{render:json=>{:stocks=>@stocks,:stats=>@stats},:content\u type=>'application/json'}
。我尝试了
format.json
,但响应头只是不断返回text/html而不是javscript。但是
format.js
与附加选项
:content\u type=>'application/json'
一起工作。任何解释都将不胜感激。谢谢

好的,经过所有的努力。我想出了解决办法。这很奇怪,我仍然找不到一个很好的解释。我将渲染行更改为
format.js{render:json=>{:stocks=>@stocks,:stats=>@stats},:content\u type=>'application/json'}
。我尝试了
format.json
,但响应头只是不断返回text/html而不是javscript。但是
format.js
与附加选项
:content\u type=>'application/json'
一起工作。任何解释都将不胜感激。谢谢

嗨,谢谢你的回复。我照你说的做了。标题显示内容类型:text/html;charset=utf-8,这很奇怪。嗨,谢谢你的回复。我照你说的做了。标题显示内容类型:text/html;charset=utf-8,这很奇怪。