Javascript 尝试使用php和angular执行删除时出现的问题
我正在尝试使用angular和php执行删除。我非常确信我的php是正确的 但我无法删除。在我的控制台日志中,它说我的删除成功了,但是当查看表时,我仍然看到重新编码的代码 在chrome中使用调试器进行进一步检查后,我发现dat我的参数索引未定义-> 我的HTML代码的一部分:Javascript 尝试使用php和angular执行删除时出现的问题,javascript,php,angularjs,angular-material,Javascript,Php,Angularjs,Angular Material,我正在尝试使用angular和php执行删除。我非常确信我的php是正确的 但我无法删除。在我的控制台日志中,它说我的删除成功了,但是当查看表时,我仍然看到重新编码的代码 在chrome中使用调试器进行进一步检查后,我发现dat我的参数索引未定义-> 我的HTML代码的一部分: <md-button class="md-primary" ng-click="delete_task(task.id)">Delete</md-button> 我的PHP代码的一部分: &l
<md-button class="md-primary" ng-click="delete_task(task.id)">Delete</md-button>
我的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;
}
我不知道如何从这一点开始。最好不要像现在这样使用querystring变量和post变量。在javascript语句上创建一个完整的对象,以获得如下内容:
{
'task_index' : index,
action: 'delete_task'
}
然后你应该在你的切换器里威胁这个对象数据
如果您采用一些使代码更干净、更容易理解的实践,那就太好了
首先,您应该测试delete_任务方法。为了成功,我建议您获取调用file\u get\u co的变量ntentsphp://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
}
?>
显然,这不是一个测试方法的好方法,你应该考虑使用任何测试框架来进行单元测试。但是,以一种可以更改参数并观察其行为的方式构建方法非常重要。一旦你确信这个方法在这个场景中更具批判性的一个是有效的,你就可以在堆栈上下一层,检查你的切换器是否工作良好。例如,此时您可以使用for Chrome测试端点。如果缺少索引,则您的参数task.id可能是错误的。打印出来,看看它的价值是什么。您也可以通过调用$scope.delete\u task(一个已知的id)在作用域中手动触发删除,并查看它是否有效。如果是这样的话,那么函数和后端都是正常的,并且您的参数是wrong@RainerPlumer,我只添加了$scope.delete_task100;在我的删除功能之后?当我在delete函数中记录我的索引时,它会显示,但会不断重复->是的,然后…如果删除按预期工作,那么您知道您的task.id是问题所在,其余的工作正常。请稍候,当我像so console.logindex那样记录索引时;它显示了它的undefined->一旦你硬编码了测试值,它就不应该说undefined。确保浏览器缓存已禁用,angular正在重新加载模板/代码。此外,代码中更严重的错误实际上是从tblTask中删除$del=mysql\u queryDELETE,其中id=.$index;永远不要将这样的变量传递到查询中……即使是初学者黑客也可以相当容易地清除数据库。使用mysql\u real\u escape\u字符串或typecast转换为int
<?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
}
?>