2013-02-06 125 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