我在这里采取角度的第一步,并打破我的头两个东西。 第一个是我无法将视图中的变量传递给http.post调用。
此index.htmlng-click
中的传递正确的值:
<tbody>
<tr ng-repeat="data in filtered = (list | filter:search | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit">
<td><a href="{{data.link}}" target="_blank">{{data.songName}}</td>
<td>{{data.artist}}</td>
<td><a ng-click="deleteSong(data.songName, data.artist, data.link)"><i class="glyphicon glyphicon-trash"></i></a></td>
</tr>
</tbody>
在app.js中,deleSong函数如下所示:
$scope.deleteSong = function($songName, $artist, $link) {
// Posting data to php file
$http({
method : 'POST',
url : 'ajax/deleteSong.php',
data : $scope.data, //forms user object
headers : {'Content-Type': 'application/x-www-form-urlencoded'}
})
.success(function(data) {
if (data.errors) {
// Showing errors.
$scope.errorSong= data.errors.song;
$scope.errorArtist= data.errors.artist;
$scope.errorLink= data.errors.link;
} else {
$scope.message = data.message;
}
});
$scope.user = null
}
最后,deleteSong.php看起来像这样:
<?php
include('../includes/config.php');
$errors = array();
$data = array();
// Getting posted data and decodeing json
$_POST = json_decode(file_get_contents('php://input'), true);
$song = $_POST['song'];
$query="DELETE FROM songs WHERE songName = '$song'";
$mysqli->set_charset('utf8mb4');
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
echo $query;
?>
当我点击删除歌曲图标时,函数会被调用,但我得到的响应是:
DELETE FROM songs WHERE songName = ''
任何想法我错过了什么,为什么查询没有得到我传递给deleteSong.php
的数据?
答案 0 :(得分:3)
按如下方式更改代码,您将数据作为ng-clik函数的参数。但你没有使用它们。相反,你正在尝试$ scope.data(这是其他的东西)。所以改变代码如下。
int j=0;
for( i = 0; i < 9; i++ )
{
if (arr[i] == arr[i+1])
cnt++;
else
{
visited[j] = cnt;
cnt = 0;
j++;
}
}
}
答案 1 :(得分:0)
您已将$ _POST [&#39; song&#39;]分配给$ song变量,但它在$ _POST-array中不存在。请将$_POST['song']
替换为$_POST['songName']
答案 2 :(得分:0)
这是一个已知问题,
在您的php文件中,而不是使用$_POST
尝试使用$data = json_decode(file_get_contents("php://input"));
(have a look here)
这可能会起作用,假设所有其余的都没有错误...... 使用console.log确保$ songName,$ artist,$ link变量包含正确的值...
只是一个注释,从不使用$
变量,因为美元用于私有angularjs变量