2016-06-25 4 views
-1

私は、MySqlデータベース内のいくつかの項目を削除するPHPスクリプトを実行するJQuery Ajax関数を持っています。このajax呼び出しは、ユーザーが特定のボタンをクリックするたびに行われます。呼び出しが完了し、削除されたアイテムが表示されないようにするには、ページをリロードする必要があります。しかし、PHPスクリプトが完成する前に「完了」機能が実行されているようです。したがって、ページはデータベース内の項目を削除せずにリロードされます。フォームは関係なく、ただのボタンです。これをどうすれば解決できますか?JQuery Ajax complete関数が即座に実行されます

<button id="deleteButton">Delete</button> 


$('#deleteButton').click(function(){ 

    $.ajax({ 
     url:'clearDatabase.php', 
     dataType:"json", 
     data:{data:data},  
     type:'POST',  
     success:function(data){  
      if(data=="0"){ 
       alert("stuff deleted"); 
      } 
     },  
     complete: function(XMLHttpRequest, status) {    
        location.reload(); 
     } 
    }); 


}); 
+1

ボタンのマークアップはどのように見えますか?明示的に型を指定せずに「送信」ボタンにしない場合、問題はフォームが送信されていることです。 – Pointy

+0

PHPスクリプトに問題がある可能性があります。要求を手動で送信する場合は、それが動作しているかどうかを確認しましたか? –

+1

'data:{data:data}'の 'data'はどこにありますか?関数 'XMLHttpRequest'を参照する' complete'の引数はなぜですか? – guest271314

答えて

1

あなたのボタンが

<button id='deleteButton' >Click</button> 

$('#deleteButton').click(function(e){ 
    e.preventDefault();// for not publish form 

    $.ajax({ 
    url:'clearDatabase.php', 
    dataType:"json", 
    data:{data:data},  
    type:'POST',  
    success:function(data){  
     if(data=="0"){ 
      alert("stuff deleted"); 
      location.reload();//here you reload the page after the user close the alert 
     } 
    },  
    complete: function(XMLHttpRequest, status) {    
       location.reload(); 
    } 
    }); 


}); 
+0

適切な書面による説明が役に立ちます。これはおそらく問題/解決策ですが、フォームが関与していることも前提としています – charlietfl

0

であれば、なぜあなたはページをリロードしたい場合は、AJAXを使用する必要がありますか?ただ、タグにあなたのボタンを回す:

<a href="clearDatabase.php?data=data">Click</a> 

clearDatabase.phpで:

//delete some items in databse 
//then redirect to your page again 
0

を、私はそれが動作するようになりました。私はlocation.reloadwindow.location=window.locationに変更しました。私は比較的新しいAjaxです。なぜこれが機能するのかわかりません。なぜ誰かが何らかの光を放つことができれば、それはすばらしいことになるでしょう。

関連する問題