2013-02-06 106 views
1

我想通过使用FOSUserBundle的AJAX注册用户。Ajax注册FOSUserBundle

问题是表单中的名称值是fos_user_registration_form_[username],所以它不被javascript接受为数组。

<input type="text" id="fos_user_registration_form_username" name="fos_user_registration_form[username]" required="required" /> 

我该如何解决这个问题?

我可以更改FOSUserBUndle中的名称参数为fos_user_registration_form_username吗?

如何在Javascript中创建一个具有fos_user_registration_form_[username]值的数组?

$("#registerButton").click(function(){ 

      data = { 
       fos_user_registration_form_[username]:$("#name").val(), // HERE IS WHERE IT CRASHES, IN THE [username] field. 
       fos_user_registration_form_[email]:$("#email").val(), 
       fos_user_registration_form_[plainPassword]:$("#password").val(), 
      }; 

      $.ajax({ 
        type: "POST", 
        url: serviceURL, 
        asyn:false, 
        data: data, 
        dataType: "json", 
        success: function(res) { 

         alert("success"); // JUST FOR TEST 

        } 
       }); 

我正在测试一个基本的例子..

此作品(触发警报)

<script type="text/javascript"> 
     data = { 
      fos_user_registration_form_username:"blabla" 
     }; 
     alert(true); 
</script> 

这不工作:(不触发警报)

<script type="text/javascript"> 
     data = { 
      fos_user_registration_form_[username]:"blabla" 
     }; 
     alert(true); 
</script> 
+0

这不是'fos_user_registration_form_ [用户名]''但fos_user_registration_form [用户名]'。 并使用http://api.jquery.com/serialize/提取表单值,它处理所有事情。 – Damien

+0

你是什么意思?序列化数据数组? – nasy

回答

0

要从输入字段获取数据,您需要将name_of_the_form_ + name_of_the_field。例如:

fos_user_registration_form_ + username =>fos_user_registration_form_username


data = { 
fos_user_registration_form[username]:$("#fos_user_registration_form_username").val(), 
fos_user_registration_form[email]:$("#fos_user_registration_form_email").val(), 
fos_user_registration_form[plainPassword]:$("#fos_user_registration_form_plainPassword").val(), 
}; 
+0

也许我已经解释过自己坏了..我没有使用表单,我只是想发送值。我有fos_user_registration_form_ [用户名]:“myusername”,我希望fosuserBundle控制器接收和验证这些值..所以验证我希望它接收fos_user_registration_form_ [用户名]作为post参数.. – nasy

+0

谢谢你的帮助Patt ..我正在开发一个移动应用程序(在phonegap中),用户可以通过ajax注册到symfony2应用程序。所以我用你说的来获得用户名,电子邮件等......所以下一步就是将它们发送给FOSUSerBudnle默认控制器的控制器。 https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/RegistrationController.php – nasy

+0

问题是,在$ form-> isValid()返回false,因为我没有通过像fos_user_registration_form_ [username]这样的必需参数。 。所以我想要的是修改Bundle来设置用户名,而不是od [username] nasy