2016-12-14 1 views
1

Webアプリケーションで作業していますが、Ajaxの返品に問題があります。return Aughを返さずにdivに返すAjaxを修正する方法

私はAJAXの返品の結果を見ることができますが、私の問題は、この結果が現れて消えてしまうことです。私はfalseを返す解決策を見つけました。問題は、表示が完了してfalseを返すことです。私のdivはページに残りますが、私がonclickを作成したボタンを再利用することはできません(javascript関数などajax呼び出し)。

誰かが解決策を持っている場合。

これはコードです:フォームはsubmitedとページの更新されますので、起こる

<input class="Admin-Bouton" type="submit" onclick="affOtp();return false" value="Générer" form="formParametres" /> 

<div id="syntheseOTP"></div> 

function affOtp() { 
    $(function(){ 
     $.ajax({ 
      url: 'vue/ressources/affOtp.php', 
      type: 'POST', 
      dataType: 'html', 
      data: { idEmploye: nom }, 
      success: function(msg) { 
       console.log(msg); 
       document.getElementById("syntheseOTP").innerHTML = msg; 
      }, 
      error: function(resu, statut, erreur) { 
       console.log(erreur); 
       alert("papa"); 
      } 
     }); 
    }); 
}; 
+2

削除 'ドキュメント-ready'ハンドラはすなわち、' $(関数(){...}) 'と'タイプ= "ボタン" ' – Satpal

+0

ねえSatpalを使用し、あなたが答える完璧ですが、私は維持する必要がありますtype = "submit" ...解決策があるかどうかわかりません –

+0

ボタン属性のインラインではなく、ajax呼び出しの最後にfalseを返します。それ以外の場合は、onclickの匿名関数ラッパーを作成し、そこからfalseを返す必要があります。 – codemonkey65

答えて

3

、あなたがタイプbutton代わりのsubmit使用していることを避けることができ:

<input id="Admin-Bouton" class="Admin-Bouton" type="button" onclick="affOtp();return false" value="Générer" form="formParametres" /> 

を私は提案しますイベントをインラインイベントの代わりにjsコードに添付するonclick

$('#Admin-Bouton').on('click', affOtp); 

<input id="Admin-Bouton" class="Admin-Bouton" type="button" value="Générer" form="formParametres" /> 

・ホープ、このことができます:

HTMLは次のようになります。

+0

あなたの返事に感謝していますね、試してみてくださいが、私は送信タイプを保持しなければなりません...このボタンは他のもの。方法がない場合、別のボタンを作成します。 –

+0

私は偽を返すようですが、ボタンを再利用することはできません。 –

+0

@ TomLgl-dcl明示的に提出する必要があります。 – Jai

0

編集:affOtp();の前に "return"を残してください。

<input class="Admin-Bouton" type="submit" onclick="return affOtp();" value="Générer" form="formParametres" /> 

<div id="syntheseOTP"></div> 

function affOtp() { 
     $(function(){ 
      $.ajax({ 
       url: 'vue/ressources/affOtp.php', 
       type: 'POST', 
       dataType: 'html', 
       data: { idEmploye: nom }, 
       success: function(msg) { 
        console.log(msg); 
        document.getElementById("syntheseOTP").innerHTML = msg; 
       }, 
       error: function(resu, statut, erreur) { 
        console.log(erreur); 
        alert("papa"); 
       } 
      }); 
    }); 
    return false; 
}; 
+0

フォームは.....提出する! – Jai

+0

提出のonclickで呼び出された関数がfalseを返す場合、それは送信してはいけません。試してください。 – codemonkey65

+1

onclick = "return affOtp();" – degr

0

答えのどれもが、まだあなたのために働いていませんので、私は(あなたがtype="submit"を変更したくない念頭に置いて)変化を次の操作を行うためにあなたをお勧めします。

<input id="AjaxButton" class="Admin-Bouton" type="submit" value="Générer" form="formParametres" /> 
<!-- remove onlick attribute and add a Id attribute in above line --> 

<div id="syntheseOTP"></div> 

ここで、スクリプトにクリックイベントハンドラを追加してください。コードから

$('#AjaxButton').on('click',affOtp); 

function affOtp(e) { // add e as input parameter 
         // removed unnecessary wrapper 
    e.preventDefault(); // this will now stop the click event. 

    $("#syntheseOTP").html("Loading...."); // add loading text into div 
     $.ajax({ 
      url: 'vue/ressources/affOtp.php', 
      type: 'POST', 
      dataType: 'html', 
      data: { idEmploye: nom }, 
      success: function(msg) { 
       console.log(msg); 
       $("#syntheseOTP").html(msg); //refactored to use jquery syntax 
      }, 
      error: function(resu, statut, erreur) { 
       console.log(erreur); 
       alert("papa"); 
      } 
     }); 
}; 
+0

affOtp関数の結果を表示するのには良い結果が得られますが、2番目の機能は動作しません。私の上司がいなくても別の解決策を見つけたり他のボタンを作成したりします。私はRajshekarを助けるために時間をパスしてくれてありがとう。 –

+0

@ TomLgl-dcl 'second fonctionnality does not work'これを詳しく説明できますか? –

+0

私はこれを可能な限り簡単に説明しています。私の前にいる別のプログラマーは、Générerボタンを使って画面上にアレイを提出して表示します(これは動作しません)。そして、私は別の配列を表示するために同じボタンを使用する必要がありますが、私は彼のコードに触れることはできませんし、私のfunctionnalityを追加します。それは別のものだから。 SubmitとButtonタイプを一緒に使用する必要があります。あなたは分かった?または、すべてのページコードが必要です。 –

関連する問題