gpt4 book ai didi

angularjs - 语法错误 : Unexpected token R in JSON at position 0 at JSON. 解析(<匿名>)

转载 作者:行者123 更新时间:2023-12-05 02:19:53 26 4
gpt4 key购买 nike

无法输入 success() 函数,而是收到语法错误“JSON.parse () 位置 0 处 JSON 中的意外标记 R”。但是所有后台数据库操作都在按预期进行。

注意:我不会从 AJAX 调用返回任何 JSON 数据

<html ng-app="PlaylistApp">
<head>
<meta charset="utf-8">
<title>Angular.js Example</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="lib/angular.min.js"></script>
<script>
var playlistApp = angular.module('PlaylistApp', []);
playlistApp.controller('PlaylistCtrl', function ($scope, $http)
{
$http({
method : 'GET',
url : 'http://localhost:8080/SignageSoC/api/playlist/all'
}).then(function success(response) {
$scope.playlists = response.data;
});
$scope.removePlaylist = function(index, playlistId)
{
var i = index;
alert(i);
alert(playlistId);
$http({
method : 'DELETE',
url : 'http://localhost:8080/SignageSoC/api/playlist/'+ playlistId
}).then(function success() {
alert(i);
$scope.playlists.splice(i, 1);
});
}
});
</script>
</head>
<body ng-controller="PlaylistCtrl">
<div>
<br>
<br>
<br>
<table class="center">
<tr>
<th>PlaylistId</th>
<th>Name</th>
<th>Total_duration</th>
<th>Play_continuous</th>
<th>Start_time</th>
<th>End_time</th>
<th>Update</th>
<th>Remove</th>
</tr>
<tr data-ng-repeat="(index,x) in playlists">
<td>{{x.playlistId}}</td>
<td>{{x.name}}</td>
<td>{{x.total_duration}}</td>
<td>{{x.play_continuous}}</td>
<td>{{x.start_time}}</td>
<td>{{x.end_time}}</td>
<td><button data-ng-click="updatePlaylist(index)">Update</button></td>
<td><button data-ng-click="removePlaylist(index, x.playlistId)">Delete</button></td>
</tr>
</table>
</div>
</body>
</html>

最佳答案

事实证明我们有办法避免这个异常。来自 Angular ajax 调用的任何响应都需要一个 promise (它将在内部解析为一个对象),并且 JSON.parse 将在该响应对象上自动调用。

如果我们没有返回任何 JSON 对象(在我的例子中是这样),那么 Angular 会在 JSON.parse () 异常的位置 0 处抛出一个 Unexpected token (any alphabet) in JSON

要使 ajax 调用接收对象以外的任何数据,我们必须使用称为 transformResponse 属性的内置配置,并让解析器知道我们没有使用任何 JSON 数据。

为此,我使用了以下方式

 $http({
method : 'DELETE',
url : 'http://localhost:8080/SignageSoC/api/playlist/'+ playlistId,
transformResponse: function(response)
{
//alert("Success() starts here");
//alert(response);
return response;
}
}).then(function success(modResponse) {
alert(JSON.stringify(modResponse));
alert(JSON.stringify(modResponse.data));
//$scope.playlists.splice(index, 1);
});

现在,如果您打印修改后的响应,您可以看到数据属性已更改为我们返回的内容。

然后我们可以对该数据执行我们需要的任何操作。

关于angularjs - 语法错误 : Unexpected token R in JSON at position 0 at JSON. 解析(<匿名>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40863701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com