2015-07-06 1 views
0

Я пытаюсь создать форму с угловым и php. Я уверен, что мой php прав.Проблема, которая пытается сформовать удаление с помощью php и углового

Но я не могу удалить. В моем протоколе консоли это говорит о том, что мое удаление было успешным, но, глядя в таблицу, я все еще вижу, что это произошло.

При дальнейшем осмотре с отладчиком в хроме я вижу Даты моего индекса параметра не определен ->http://gyazo.com/88b6dcf9d4c03a1fc9dd235303b20a8f

(часть) Мой HTML код:

<md-button class="md-primary" ng-click="delete_task(task.id)">Delete</md-button> 

(часть) Мой app.js файл :

/** function to delete a task from list referencing php **/ 
     $scope.delete_task = function(index) { 
      debugger; 
      $http.post('db.php?action=delete_task', 
       { 
        'task_index' : index 
       } 
      )  
      .success(function (data, status, headers, config) { 
       // here we also replace how to get the user 
       getTaskFunction( 
        /* success function */ 
        function(data) { 
         $scope.taskInfo = data; 
         console.log("The taks have been reloaded" , $scope.taskInfo); 
        }, 
        /* error function */ 
        function() 
        { 
         alert("Server load failed"); 
        } 
       ); 
       console.log('Deletion was succesfull'); 
      }) 
      .error(function(data, status, headers, config) { 
       console.log("You were NOT succesfull in deleting a task"); 
      } 
     ); 

(часть) Мой PHP код:

<?php 
    include('config.php'); 

    switch($_GET['action']) { 
     case 'get_ProjectType_Info' : 
      get_ProjectType_Info(); 
      break; 
     case 'add_task' : 
      add_task(); 
      break; 
     case 'get_Location_Info' : 
      get_Location_Info(); 
      break; 
     case 'get_Task_Info' : 
      get_Task_Info(); 
      break; 
     case 'delete_task' : 
      delete_task(); 
      break; 
    } 

    /** Function to delete a task **/ 
    function delete_task() { 
     $data = json_decode(file_get_contents("php://input")); 
     $index = $data->task_index; 
     echo ($index); 
     //print_r($data); 
     $del = mysql_query("DELETE FROM tblTask WHERE id = ".$index); 
     if($del) 
     return true; 
     return false; 
    } 

Я не уверен, как это исправить.

+0

Если индекс отсутствует, значит, ваш параметр «task.id», вероятно, неверен. Распечатайте его и посмотрите, какова его ценность. Вы также можете инициировать удаление вручную в области, вызывая $ scope.delete_task («известный идентификатор») и посмотреть, работает ли он. Если это так, то функция и бэкэнд в порядке, а ваш параметр неверен –

+0

@RainerPlumer, я просто добавляю $ scope.delete_task (100); после моей функции удаления? когда я регистрирую свой индекс в функции удаления, он показывает, но постоянно повторяется -> http://gyazo.com/ee08c8c0cbc00c711c40abbb92a3730c – GY22

+0

yep, затем ... если удаление работает так, как ожидалось, вы знаете, что ваш «task.id» проблема, а остальное работает. –

ответ

0

Должно быть лучше не использовать переменные запроса с переменными post, как вы это делаете. Создать полный объект на яваскрипте заявлении для того, чтобы иметь что-то вроде этого:

{ 
    'task_index' : index, 
    action: 'delete_task' 
} 

И тогда вы должны угроза этого объекта данных внутри вас переключатель.

Было бы здорово, если бы вы приняли некоторые практики, которые делают код более чистым и понятным.

Прежде всего, вы должны проверить свой метод delete_task. Чтобы сделать это успешно, я предлагаю вам перечислить переменные, вызывающие file_get_contents("php://input")), в коммутатор и передать их как параметры метода. Сделайте это следующим образом:

<?php 
    // ... 
    // Receive id you have already collected 
    function delete_task($task_id){   
    $del = mysql_query("DELETE FROM tblTask WHERE id = ".$task_id); 
    if($del) return true; 
    return false; 
    } 

    // test that method 
    function test_delete(){ 
    $ret = delete_task(4); // test with valid and invalid ids 
    } 
?> 

Очевидно, что это не красивый способ проверить методы и вы должны рассмотреть возможность использования любой тестовой основы для модульных тестов. Но важно создавать методы таким образом, чтобы вы могли изменять параметры и наблюдать за их поведением. Как только вы убедитесь, что этот метод (более критический в этом пейзаже) работает, вы можете спуститься на один уровень на стек и проверить, работает ли ваш коммутатор. В настоящее время вы можете проверить свою конечную точку, используя в качестве примера Postman для Chrome.