2016-05-04 2 views
1

Когда я использую этот код, он переходит в состояние успеха else и показывает ошибку. Но когда я обновляю страницу, запись автоматически удаляется. Пожалуйста, предложите мне, что я могу сделать.Удаление записи с использованием jquery и ajax

JQuery скрипт:

<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> 

Просмотр файла: Файл

<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> 

Контроллер:

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

какой отзыв? – guradio

+1

Вместо 'return json_encode' использовать' echo json_encode' – Rayon

ответ

0

Просто измените последнюю строку вашей функции контроллера:

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

в

echo 'Success'; 
+0

извините, что ваш ans не работает –

0

обновление вы действуете контроллер, как,

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

Я просто попытался ниже условия в сценарии для AJAX и она работает. Я думаю, что не подтверждаю или не принимаю ответ, поэтому поэтому он постоянно переходит в другое условие, где написана ошибка.

Надеюсь, это поможет кому-то.

МОЕГО нового сценарий

<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

Вашего Аякс возвращает объект, так что вы не можете использовать if (response == "Success") как это. код изменения, как это:

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; 
} 

, если это правда, он возвращает 1, так Chage Аякса как это:

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

Я предположил, что вы хотите скрыть tr если ответ верно.

0

Поскольку вы передали его как массив (в javascript он будет преобразован как объект), значение ответа будет доступно как response.success. Вы можете проверить объект response, если вы пишете его на консоли.

Попробуйте это в метод АЯКС:

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

    } 

EDIT: И я предлагаю вам изменить выход в методе вашего контроллера:

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

вместо

return json_encode(array("success" => true)); 
Смежные вопросы