0

この質問のシーケンスで、フォームに入力したコンテンツがDBを更新しています。ただし、このリンクをクリックすると

<a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>

jQuery .ajax関数は、エラーコールバックを起動し、その情報でDBを更新します。

これがコードです

function doUpdate()
{
              e.preventDefault();
              $.ajax({
                type: "POST",
                data: $("#validation").serialize(),
                cache: false,
                url:"modules/user/updateuser.php",
                success : function(data){
                    $("#response-update").html(data);
                },
                error:  function(data){
                    $("#response-update").html("Erro na submissão");
                }                
           });
          }

データを保存するときにユーザーに素敵なメッセージを表示するために、成功のコールバックを取得したいと思います。

しかし、私がこれを単純に行うと

 <a href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
 <script>
 $(function(){
 $('#commit-changes').click(function(e){
              e.preventDefault();
              $.ajax({
                type: "POST",
                data: $("#validation").serialize(),
                cache: false,
                url:"modules/user/updateuser.php",
                success : function(data){
                    $("#response-update").html(data);
                },
                error:  function(data){
                    $("#response-update").html("Erro na submissão");
                }                
           });
          });
 });
 </script>

「submition」はまったく機能しません。

どうすればこの問題を解決できますか?何日もこの部分で立ち往生しています!:(

編集-フォームのHTML(これはページの物乞いで読み込まれる応答でもあります)

  $response.='<form id="validation" 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 onclick="return doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a><a class="uibutton special"   onClick="ResetForm()" title="Limpar Formulário"   >Limpar Formulário</a>
                                 </div>
                                 </div>

                                </fieldset></form>
4

4 に答える 4

0

私は解決策を持っています。純粋なjQueryソリューションが欲しかったので、最もきれいではありませんが、うまく機能します。

変更する必要があります

<a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>

<input onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form" value="Gravar" />

そして今、それは成功したコールバックの発火で動作します。

これに関するすべての助けに感謝します。

于 2012-06-20T18:57:26.617 に答える
0

doUpdate()関数を期待どおりに動作させるには、これを試してください

アンカー タグのonclick属性を次のように変更します。

<a onclick="return doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>

また、doUpdate 関数を次のように変更します。

function doUpdate()
{
  $.ajax({
     type: "POST",
     data: $("#validation").serialize(),
     cache: false,
     url:"modules/user/updateuser.php",
     success : function(data){
         $("#response-update").html(data);
     },
     error:  function(data){
         $("#response-update").html("Erro na submissão");
     }                
  });

  return false;
}
于 2012-06-20T18:20:48.067 に答える
0

jquery ajax の成功/エラー コールバックは、POST リクエストが受信されたかどうかに基づいて起動されます。投稿したファイル内で実際に何が起こるかは関係ありません。エラーコールバックを取得してデータベースを更新するのは奇妙ですが、投稿しているphpファイルを試して応答を返し、その応答に基づいて成功/エラーを実行できます。

あなたのphpファイルには、次のようなものがあります:

$testQuery = "QUERY STRING HERE";
if(!mysql_query($testQuery))
{
    echo "error";
    exit;
}
else
{
    echo "sucess";
    exit;
}

そして、doUpdate 関数で、html に基づいて成功のコールバックと出力を実行できます。

    function doUpdate()
{
              e.preventDefault();
              $.ajax({
                type: "POST",
                data: $("#validation").serialize(),
                cache: false,
                url:"modules/user/updateuser.php",
                success : function(data){
                   if(data == "success")
                   {
                       $("#response-update").html(data);
                   }
                   else
                   {
                       $("#response-update").html("Erro na submissão");
                   }                    
                }            
           });
          }

POST が受信されなかった場合でも起動する「完全な」コールバックを使用することもできますが、関数が実行されたこと以外は何もわかりません。

于 2012-06-20T18:31:41.693 に答える
0

jQuery コードをdocument.readyハンドラー内に配置しましたか?

jQuery(function ($) {
    // put jQuery here
});

最初の例はdocument.ready、なくても機能します (ただし、とにかく jQuery を使用しているため、あまり意味がありません)。2番目はしません。

于 2012-06-20T18:11:39.407 に答える