在执行ajax post表单时获取语法错误

时间:2014-03-31 14:19:30

标签: javascript jquery ruby-on-rails ajax

我有两个div容器。一个div有一个表单,另一个有很多我想隐藏的敏感内容。它们都是用bootstrap构建的。

这个想法是第一个表单需要一个人输入密码,然后这应该触发对后端的ajax post调用以检查密码是否正确,如果是,则第二个容器将被显示。

在我的routes.rb

post 'users/trial_signup_validation', to: 'users#trial_signup_validation' 

在我的users_controller.rb

  def trial_signup_validation
    @password = params['password']
    if @password == 'sales'
      render :json => { "success" : "true" }
    else 
      render :json => { "success" : "false" }
  end 

该方法从ajax post获取对象并检查它,然后将json true或false返回给视图。

这是视图

<script type="text/javascript">

$("#protectivepanel").submit(function(event) {

  $.ajax({
        type: "POST", 
        url: "/users/trial_signup_validation", 
        data: $("#protectivepanel").serialize(),
        success: function(data){
          return data.success 
        } 
    }); 
  event.preventDefault()
});


$(document).ready(function(){
    $("#the_submit_button").click(function(e){ 
      e.preventDefault();
        if (data.success){
          $("#protectivepanel").hide() 
          $("#salespanel > div").removeClass("hide")
        }
        else {
          $("#protectivepanel").show()
        }   
    });
  });
</script>

我的第一个表单看起来像这样

<div class="container" id="protectivepanel">
  <form role="form">
    <div class="form-group">
      <label for="representativepassword">Representative's Password</label>
      <input type="text" class="form-control" id="representativepassword" placeholder=" Enter Password">
      <button type="submit" class="btn btn-default" id="the_submit_button">Submit</button>
    </div>
  </form>
</div>

当我运行rails s时,我收到一个语法错误,指向同一个控制器中的另一个方法,这对我来说毫无意义。

SyntaxError at /users/trial_signup
syntax error, unexpected ':', expecting => 

这个方法在我开始处理jquery表单之前完美运行。

1 个答案:

答案 0 :(得分:1)

更新trial_signup_validation,如下所示:

 def trial_signup_validation
    @password = params['password']
    if @password == 'sales'
      render :json => { "success" => "true" }  ## Use hash rocket instead of :
    else 
      render :json => { "success" => "false" }  ## Use hash rocket instead of :
  end 

注意:

"success" and "true"都是Strings,因此您必须使用hash rocket(=>)来表示哈希语法,因为没有符号,所以不能使用: