Silverstripe 3 でユーザー名フィールドを検証しようとしています。Ajax はユーザー名が存在するかどうかをチェックし、存在する場合は ajax を介して「この名前が使用されています」と表示します。
しかし問題は、Ajax 経由で変数に値が渡されないことです。$_POST['ユーザー名'] が空です。
したがって、コントローラーの私のコード:
    public function checkuser1(){
      $Params = $this->getURLParams();      
if($Params['ID'] == '1'){
            if (Director::is_ajax()) {
                  $username = $_POST['username']; // Seems that I dont receive any value from input vie ajax
                  $username = mysql_real_escape_string($username);
                  $check_for_username = mysql_query("SELECT ID FROM Member WHERE UserName='$username'");
                  if(mysql_num_rows($check_for_username))
                  {
                     return '1';
                  }
                  else
                  {
                     return '0';
                  }
            }
            else {
               return Director::redirect(Director::baseURL());
            }                   
   }
}
public function checkuser(){
      return $this->checkuser1();
}
そしてJSコード:
<script type="text/javascript">
$(document).ready(function(){
$("#Form_RegistrationForm_UserName").change(function(){
$(".container .inner .top .right").html("<img src='ajax-loader.gif' /> checking...");
               var username = $("#Form_RegistrationForm_UserName").val();
               var dataString = 'username='+ username;
                  $.ajax({
                        type:"post",
                        url:"http://localhost/mysite/member/checkuser/1/",
                        data:dataString,
                        success:function(server_response){
                           if(server_response == '0'){
                              $(".container .inner .top .right").html("Username available");
                           }
                           else{
                              $(".container .inner .top .right").html("Username already taken");
                           }
                        }
                      });
               });
});
</script>