2016-05-04 18 views
1

Wenn ich diesen Code benutze, wird er in einem anderen Zustand ausgeführt und zeigt einen Fehler an. Aber wenn ich die Seite aktualisiere, wird der Datensatz automatisch gelöscht. Bitte schlagen Sie mir vor, was ich tun kann.Löschen von Datensätzen mit jquery und ajax

jquery Skript:

<script> 
$(document).ready(function(){ 

$(".delete").click(function(event){ 
alert("Delete?"); 
var href = $(this).attr("href") 
var btn = $(this); 

    $.ajax({ 
    type: "GET", 
    url: href, 
    success: function(response) { 

     if (response == "Success") 
     { 
     $(btn).closest('tr').fadeOut("slow"); 
     } 
     else 
     { 
     alert("Error"); 
     } 

    } 
    }); 
event.preventDefault(); 
}) 
}); 
</script> 

View file:

<table style="width:100%" border="1" class="table"> 
    <thead> 
    <tr> 
      <th>score Id</th> 
      <th>student name </th> 
      <th>subject Name</th> 
      <th>student marks</th>  
      <th>Action</th> 
     </tr> 
    </thead>  
     <?php foreach($score as $r): ?> 
    <tbody> 
     <tr><td><?php echo $r->score_id; ?></td> 
      <td><?php echo $r->student_name; ?></td> 
      <td><?php echo $r->subject_name; ?></td> 
      <td><?php echo $r->marks; ?></td> 
      <?php if($status <> 1): ?> 
      <?php if($admin_id == $r->admin_id): ?> 
      <td><a class="btn btn-info" href="<?php echo base_url(); ?>index.php/score_listing/edit/<?php echo $r->score_id; ?>" > Edit</a><a class="btn delete btn-danger" href="<?php echo base_url(); ?>index.php/score_listing/delete/<?php echo $r->score_id; ?>"> Delete</a></td> 
      <?php endif; ?> 
      <?php else: ?> 
      <td><a class="btn btn-info" href="<?php echo base_url(); ?>index.php/score_listing/edit/<?php echo $r->score_id; ?>" > Edit</a><a class="btn delete btn-danger" href="<?php echo base_url(); ?>index.php/score_listing/delete/<?php echo $r->score_id; ?>" > Delete</a></td> 

      <?php endif; ?>   
     </tr> 
    </tbody>  
     <?php endforeach; ?> 

    </table> 

Controller-Datei:

public function delete($id) 
{ 
    $admin_name = $this->session->userdata('admin_name'); 
    log_message('debug',"this record deleted by Admin = ".$admin_name); 

    $score = $this->score->delete_operation($id); 

    $error_data = array('error' => 'Error while deleting record');; 
    return json_encode(array("success" => true)); 
} 
+0

Was zeigt die Antwort? – guradio

+1

Anstelle von 'return json_encode' verwende 'echo json_encode' – Rayon

Antwort

0

Sie Ihre Controller letzte Zeile der Funktion ändern:

return json_encode(array("success" => true)); 

zu

echo 'Success'; 
+0

sorry your ans funktioniert nicht –

0

Update Sie Controller-Funktion wie

public function delete($id) { 
... 
... 
die('Success'); 
} 
0

Ich habe gerade versucht, die unter Bedingung in Skript für Ajax und es funktioniert. Ich denke, ich bestätige nicht oder nehme keine Antwort, deshalb geht es kontinuierlich in einen anderen Zustand, in dem Fehler geschrieben werden.

Ich hoffe, das wird jemandem helfen.

MEIN neues Skript

<script> 
$(document).ready(function(){ 

$(".delete").click(function(event){ 
var del = confirm("Delete record?"); 
var href = $(this).attr("href") 
var btn = $(this); 
if(del == true) 
{ 
    $.ajax({ 
    type: "GET", 
    url: href, 
    success: function(response) { 

     if (response != "Success") 
     { 
     $(btn).closest('tr').fadeOut("slow"); 
     } 
     else 
     { 
     alert("Error"); 
     } 

    } 
    }); 
} 
event.preventDefault(); 
}) 
}); 
</script> 
0

Ihr Ajax ein Objekt zurückgeben, so dass Sie if (response == "Success") wie diese verwenden können nicht. Änderung Code wie folgt:

public function delete($id) 
{ 
    $admin_name = $this->session->userdata('admin_name'); 
    log_message('debug',"this record deleted by Admin = ".$admin_name); 

    $score = $this->score->delete_operation($id); 

    $error_data = 2; 
    echo 1; 
} 

wenn sie es 1 wahr zurückgeben, so chage Ajax wie folgt aus:

if (parseInt(response)==1) 
      { 
      $(btn).closest('tr').fadeOut("slow"); 
      } 
      else 
      { 
      alert("Error"); 
      } 
    } 

nahm ich an Sie tr verstecken wollen, wenn Antwort wahr ist.

0

Da Sie es als Array übergeben haben (in Javascript wird es als Objekt konvertiert), ist der Wert der Antwort als response.success verfügbar. Sie können das response Objekt überprüfen, wenn Sie es in die Konsole schreiben.

Versuchen Sie dies in Ihrem Ajax-Methode:

success: function(response) { 
     console.log(response); 
     if (response.success == true) 
     { 
     $(btn).closest('tr').fadeOut("slow"); 
     } 
     else 
     { 
     alert("Error"); 
     } 

    } 

EDIT: Und ich schlage vor, Sie den Ausgang des in Ihrem Controller-Methode zu ändern:

$this->output->set_content_type('application/json')->set_output(json_encode(array("result" => true))); 

statt

return json_encode(array("success" => true)); 
Verwandte Themen