0

db のユーザー情報を更新するこのフォームがあります。ただし、この機能は ajax では機能しません (更新を伴う単純な送信で機能します)。

これにより、フォームのシリアル化されたデータがサーバーの jQueryにポストされます

  $('#commit-changes').click(function(){               

           $('#validation').submit(function(){
              $.ajax({
                type: "POST",
                data: $("#validation").serialize(),
                cache: false,
                url:"modules/user/updateuser.php",
                success : function(data){
                    $("#response-update").html(data);
                },
                error:function(){
                    alert("ERROR");
                }

            });
           });               
        });

マークアップHTMLを出力する HTML は次のとおりです。

    $rcs_roles = $user->getRoles();
     $role ='';
     foreach($rcs_roles as $roles)
     {
        if($roles->role_number == $rcs_user->permissao) 
            $role .= '<option value="'.$roles->role_number.'" selected="selected">'.$roles->role.'</option>';
        else
            $role.= '<option value="'.$roles->role_number.'">'.$roles->role.'</option>';
     }

     if($rcs_user->activo == 0)
     {
         $activo = '<input type="checkbox" name="activo" class="on_off_checkbox"  value="1"   />';
     }
     else
     {
         $activo = '<input type="checkbox" name="activo" class="on_off_checkbox" checked="checked"  value="1"   />';
     }


     $response = '';

     $response.='<form id="validation" action="" method="post"> 
                                    <fieldset >
                                    <input type="hidden" name="user_id" 

value="'.$_POST['user_id'].'"/>
                                <legend>Actualizar Dados Utilizador</legend>
                                      <div class="section ">
                                      <label>Nome<small>Insira o seu nome</small></label>   
                                      <div> 
                                      <input type="text" class="validate[required,custom[onlyLetterSp]] large" name="nome" id="f_required" value="'.utf8_encode($rcs_user->nome).'">
                                      </div>                                      
                                      </div>';
 $response.='<div class="section ">
                                      <label> Email<small>Insira o seu email</small></label>   
                                      <div> 
                                      <input type="text" class="validate[required,custom[email]] large" name="email" id="e_required" value="'.  utf8_encode($rcs_user->email).'">
                                      </div>
                                      </div>';

 $response.= '<div class="section">
                                        <label>Permissões<small>Seleccione o tipo de utilizador </small></label>   
                                        <div>
                                            <select class="medium" name="role">

                                                       '.$role.'        



                                        </select>       
                                  </div>
                                  </div>                                      
                                 <div class="section">
                                        <label>Activo<small>Activar utilizador</small></label>   
                                         <div>
                                            '.$activo.'
                                            <span class="f_help">ON / OFF  </span> 
                                        </div>
                                  </div>

                                  <div class="section last">
                                  <div>
                                      <a id="commit-changes" class="uibutton submit_form" name="submit" >Gravar</a><a class="uibutton special"   onClick="ResetForm()" title="Limpar Formulário"   >Limpar Formulário</a>
                                 </div>
                                 </div>

                                </fieldset></form>';

そして、サーバー側の処理 PHP

$response='';
$id_user = $_POST['user_id'];
$name = utf8_encode($_POST['nome']);
$email = utf8_encode($_POST['email']);

$permitions = $_POST['role'];

if(!isset($_POST['activo']))
{
    $active = 0;
}
else
{
    $active = 1;
}

$user = new Users();

try
{
    $user->updateUsers($name, $email, $permitions, $active, $id_user);
    $response = "SUCESSO";
}
 catch (Exception $e)
 {
    $response = "ERRO".$e->getMessage();
 }

 echo $response;

私が得ることができるすべての助けに感謝します

4

3 に答える 3

0

一見すると、イベントハンドラーをバインドする前に、ドキュメントが読み込まれるまで待っていないように見えます。これは、.clickイベントハンドラーを追加しようとしても、#commit-changesが存在しないことを意味します。

これをjQueryで修正するには、これをコード全体にラップします。

$(document).ready(function(){
  // do stuff
});

この関数は、jQueryのdocument.readyハンドラーにコールバックを送信するため、すべてのコードはページが読み込まれたときにのみ実行されます。

于 2012-06-20T14:25:58.440 に答える
0

.submit() 関数を削除します。このようなもの。

  $.post("modules/user/updateuser.php",{data:$("#validation").serialize()},function(response){
     $("#response-update").html(response);
});

PHP側で試してprint_r($_POST['data']);、出力を投稿してください。

于 2012-06-20T14:29:05.963 に答える
0

updateUsers関数 (Users クラス内) で、フィールドnomeまたはnameを更新しようとしましたか?

あなたはnoだけを使うべきだと思いますか?

于 2012-06-20T17:56:15.580 に答える