2016-10-29 18 views
-1

問題:.ajax()onclickで動作しません。私はDeleteをクリックするとなぜ、.ajax()はonclickと連携していませんか?

これは起こるべき:

  1. MySqlデータベース内の行を削除します。
  2. 要素をid="39"で非表示にします。
  3. indexページにリダイレクトしてください。

ここでは、私がこれまで持っているものです。

index.phpファイル:

<script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script> 
<span class="delete_test" onclick="del_fn(39)" id="39">Delete</span>  

<script> 
function del_fn(test_id){ 
    var x = confirm("Are you sure you want to delete?"); 
    if (x) 
    { 
     $.ajax({ 
     type:'POST', 
     url:'test7.php', 
     data:'delete_id='+test_id, 
     success:function(data) { 
      if(data) { 
       document.getElementById(test_id).style.display = "none"; 
       window.location = 'https://www.example.com'; 
      } 
     } 
     }); 
    } 
    else 
    { 
     return false; 
    } 
} 
</script> 

test7.phpファイル:

session_start(); 
include("connect.php"); 
$id_delete = mysqli_real_escape_string($db_mysqli,$_POST['delete_id']); 
$db_mysqli->query("DELETE FROM table Where id = '$id_delete'"); 
+0

確認ダイアログも表示されますか? –

+0

'if(data)'部分を削除しようとしていますか?あなたのtest7.phpでデータが表示されないようです – jamesjaya

+0

ブラウザの開発者ツールのコンソールとネットワークタブでエラーをチェックし、何が起きているかを確認してください –

答えて

1

私は問題がif(data)一部であると思います。

私はどうなるのか

  • クエリがtrueまたはfalse外に適切かどうかとechoを実行するかどうかを確認するtest7.phpファイル内のいくつかのロジックを追加します。
  • ハンドブックsuccessハンドラでは、if(data == 'true')をチェックしてロジックを続けます。ここで

簡単な例です:ajax一部に

if(<check if query went okay here>) 
{ 
    echo json_encode(true); 
} 
else 
{ 
    echo json_encode(false); 
} 
  • test7.php

    • $.ajax({ 
          url:  path, 
          type:  "POST", 
          dataType: "json", 
          data:  data, 
          cache: false, 
      
          success: function(response) 
          { 
           if(response === false) 
           { 
            // something went wrong with the query... 
           } 
           else 
           { 
            // query seems okay... 
           } 
          } 
      }); 
      

    私はリダイレクトが上記のコードより先に進んでいることに一度気付きました。しかし、あなたの場合、なぜあなたはユーザーをリダイレクトしている場合に要素を隠す必要がありますか?とにかく確実に確認できるように、私はこれを追加します:

    setTimeout(function() { 
        window.location = 'https://www.example.com'; 
    }, 1); 
    

    希望します!

  • 関連する問題