Javascript 尝试使用AngularJS函数删除MySQL条目
我已经到处找过了,但还没有找到与此完全匹配的,所以这里是。。。 我有一个简单的HTML页面,它使用AngularJS从MySQL表输出项目。但是现在我正在尝试创建一个函数,当用户单击按钮时,该函数将从数据库中删除该项。然而,现在,我的功能完全不起作用,我希望一双新的眼睛能帮我解决这个问题 下面是相关的HTMLJavascript 尝试使用AngularJS函数删除MySQL条目,javascript,php,mysql,angularjs,Javascript,Php,Mysql,Angularjs,我已经到处找过了,但还没有找到与此完全匹配的,所以这里是。。。 我有一个简单的HTML页面,它使用AngularJS从MySQL表输出项目。但是现在我正在尝试创建一个函数,当用户单击按钮时,该函数将从数据库中删除该项。然而,现在,我的功能完全不起作用,我希望一双新的眼睛能帮我解决这个问题 下面是相关的HTML <body data-ng-controller="testController" ng-cloak> <table data-ng-init="getEntries
<body data-ng-controller="testController" ng-cloak>
<table data-ng-init="getEntries()">
<thead>
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr data-ng-repeat="name in data">
<td>{{name.id}}</td>
<td>{{name.fname}}</td>
<td>{{name.fname}}</td>
<td>{{name.email}}</td>
<td><input type="button" data-ng-click="deleteEntry(name.id)" value="X"></input>
</tr>
</tbody>
</table>
<script src="angular.js"></script>
<script src="app.js"></script>
</body>
最后是PHP代码
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$host = "localhost";
$username = "visarts_testing";
$password = "******";
$dbname = "visarts_test";
$tbl_name = "tested";
//open a connection to the database
$conn = mysqli_connect($host, $username, $password, $dbname);
if(!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//get action from the controller
switch($_GET['action']) {
case 'delete_entry' :
delete_entry();
break;
}
function delete_entry() {
$data = json_decode(file_get_contents("php://input"));
$index = $data->id;
$delSQL = "DELETE FROM $tbl_name WHERE id = $index";
if(mysqli_query($conn, $delSQL) {
return true;
} else {
echo "Error: " . $sql . "<br />" . mysqli_error($conn);
}
}
//close the db connection
mysqli_close($conn);
?>
您必须返回带有错误代码(501)的响应。php代码返回有效的响应代码。(200-成功)问题在于PHP的if(mysqli_查询($conn,$delSQL){
产生错误。应该是if(mysqli_查询($conn,$delSQL)){
请注意,在您的post
之后调用了双参数success
或error
?我刚刚为success添加了一条控制台消息,正在调用success。因此,我猜错误在PHP方面……您从以下内容中得到了什么:函数delete\u entry(){print\r(file\u get\u contents)(“php://input") );die();
您必须在开发工具或firebug中查看响应。好的,所以我将其添加到函数中。firebug发现了一个它不喜欢的语法错误,所以我修复了它。但是现在,仍然没有发生任何事情,尽管这是我在控制台中得到的:POST{“id”:“1”}虽然我现在看到这个消息来自我的app.js文件,而不是dbfunctions.php。我从来没有听说过这样的事情!我不认为这是真的。angular知道哪里出了问题吗?我说的是angular,不是php。这是一个模式web。哦,你刚才说要想触发angular中的error
,他需要返回501个头,我明白了好的,你确定你成功地连接到数据库了吗?很确定,但老实说,我不知道如何通过编程检查。我对mySql和php非常陌生,如果不是很明显的话。我有另一个脚本,它从HTML页面获取表单输入,并将一个新行项目写入同一个表中——一切都差不多在我现在所做的工作中,相同的数据库,相同的表,唯一的区别是我从angular脚本文件中获取要传递的数据。
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$host = "localhost";
$username = "visarts_testing";
$password = "******";
$dbname = "visarts_test";
$tbl_name = "tested";
//open a connection to the database
$conn = mysqli_connect($host, $username, $password, $dbname);
if(!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//get action from the controller
switch($_GET['action']) {
case 'delete_entry' :
delete_entry();
break;
}
function delete_entry() {
$data = json_decode(file_get_contents("php://input"));
$index = $data->id;
$delSQL = "DELETE FROM $tbl_name WHERE id = $index";
if(mysqli_query($conn, $delSQL) {
return true;
} else {
echo "Error: " . $sql . "<br />" . mysqli_error($conn);
}
}
//close the db connection
mysqli_close($conn);
?>