【发布时间】:2015-07-06 21:58:17
【问题描述】:
我正在尝试使用 angular 和 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;
}
我不知道从现在开始如何继续。
【问题讨论】:
-
如果索引丢失,那么您的参数“task.id”可能是错误的。打印出来看看它的价值是多少。您也可以通过调用 $scope.delete_task("a known id") 在范围内手动触发删除并查看它是否有效。如果是,那么函数和后端都可以,但你的参数是错误的
-
@RainerPlumer,我只是添加 $scope.delete_task(100);在我的删除功能之后?当我在删除功能中记录我的索引时,它会显示但不断重复 -> gyazo.com/ee08c8c0cbc00c711c40abbb92a3730c
-
是的,那么...如果删除按预期工作,您就知道您的“task.id”是问题所在,其余的工作正常。
-
现在等一下,当我像这样记录索引时 console.log(index);它表明它的未定义 -> gyazo.com/8923f8b1df132108a1b9f8ca6a843792
-
一旦您对该测试值进行硬编码,它就不应该说“未定义”。确保您的浏览器缓存已禁用,并且 Angular 正在重新加载您的模板/代码。此外,您的代码中一个更严重的错误实际上是“$del = mysql_query("DELETE FROM tblTask WHERE id = ".$index);"永远不要将这样的变量传递到您的查询中......即使是初学者黑客也可以相当容易地清除您的数据库。使用 mysql_real_escape_string 或类型转换为 (int)
标签: javascript php angularjs angular-material