发布ajax请求参数有时会以错误的格式发送到rails

时间:2011-09-29 10:25:19

标签: jquery ruby-on-rails ajax json

我的问题太奇怪了:

  1. 我有这样的表格:

    <form id="my-form" method="post" action="/password_reset/update/<%= @user.perishable_token %>" charset="utf-8" autocomplete="off">
      <input type="password" name="user[password]" class="required" minlength="6" />
      <input type="password" name="user[password_confirmation]" class="required" equalto="#password-field" minlength="6" />
      <input type="hidden" name="page" value="set" />
      <input type="submit" value="Submit"/>
    </form>
    
  2. 客户端向我的rails服务器发送ajax请求(使用jquery 1.6.1,jQuery Validation Plugin 1.8.1,jQuery Form Plugin 2.67)

    $("#my-form").validate({
      submitHandler: function(form) {
        $(form).ajaxSubmit();
      }
    });
    
  3. 服务器端收到请求,这是问题所在。有时:

    • 而不是获取具有预期格式的参数,如下所示

      Parameters: {"user"=>{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "page"=>"set", "id"=>"bFC7bkz6tzOF4i2KXZ"}

    • ......我明白了:

      Parameters: {"_json"=>"user%5Bpassword%5D=password&user%5Bpassword_confirmation%5D=password&page=set", "id"=>"perishable_token"}

  4. 我在很多情况下测试了表单(使用不同的浏览器/操作系统),我不可能重现这个问题。我可以在生产rails log中看到它。

    所以我的问题是:

    • 为什么会出现这个问题?
    • 如何重现此错误?

    非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

尝试设置所需的数据类型:

$(form).ajaxSubmit({dataType=>"desirable format"});  

格式可以是“xml”,“script”或“json”