Я пытаюсь создать форму с угловым и php. Я уверен, что мой php прав.
Но я не могу удалить. В моем протоколе консоли это говорит о том, что мое удаление было успешным, но, глядя в таблицу, я все еще вижу, что это произошло.
При дальнейшей проверке с отладчиком в chrome я вижу, что мой индекс параметра не определен → 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;
}
Я не уверен, как исходить из этого момента.
Лучше не использовать переменные запроса и переменные post, как вы это делаете. Создайте полный объект в инструкции javascript, чтобы иметь что-то вроде этого:
{
'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, в качестве примера.