独創アプリ開発日記 95日目 ニックネーム変更処理完了

ニックネーム変更処理で唯一未実装だったサーバ側のユニークチェックですが、結局ajaxを使って実装を済ませました。

クラアント側はjQueryを、サーバ側はphpを使っています。最終的にコードは以下のような形になりました。

ajax使ったとか言いつつ async:false で同期処理にしています。なんかカッコ悪いな・・・

クライアント側:


    function change_nickname() {
        bExit = false;
        nickname = ""
        while(!bExit) {
            nickname = window.prompt("新しいニックネームを入力してください", nickname);
            
            if (null == nickname) {
                // キャンセル
                bExit = true;
            } else {
                nickname = jQuery.trim(nickname);
                if (nickname.length < 3 || 30 < nickname.length) {
                    alert('ニックネームは3文字以上30文字以下で入力して下さい。');
                } else if (nickname.indexOf(' ') != -1 || nickname.indexOf(' ') != -1) {
                    alert('ニックネームにスペースを含めることは出来ません。');
                } else {
                    var exist = $.ajax({
                      url: "ncc/" + encodeURIComponent(nickname),
                      async: false
                     }).responseText;
                    if ('1' == exist) {
                        alert('すでに存在するニックネームです。違うニックネームを入力して下さい。');
                    } else if ('0' == exist) {
                        bExit = true;
                        $("#formNickName").submit();
                    } else {
                        bExit = true;
                        alert('予期しないエラーです。お手数ですがもう一度やり直して下さい。');
                    }
                }
            }
        }
    }

サーバ側:


〜 略 〜
class UserController extends Controller
{
    public function ncc(Request $request, $nickname) {
        try {
            $nickname = rawurldecode($nickname);
            〜 略:ここでDBアクセスしてニックネームの重複チェック。存在すれば return '1' 〜
            return '0'; // 重複してなければ 0 を返す
        } catch (Exception $e) {
            〜 略:エラー処理 〜
        }
    }
〜 略 〜

Lumenの設定ファイル:


〜 略 〜
$router->get('ncc/{nickname}', 'UserController@ncc');
〜 略 〜

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です