Javascript 角度$http.get不传递参数
这似乎是个简单的问题,我一定忽略了一些小问题 我有一个函数,可以访问SpotifyAPI并搜索艺术家。我知道通过普通URL访问此路由会返回一个结果。(例如Javascript 角度$http.get不传递参数,javascript,angularjs,node.js,express,spotify,Javascript,Angularjs,Node.js,Express,Spotify,这似乎是个简单的问题,我一定忽略了一些小问题 我有一个函数,可以访问SpotifyAPI并搜索艺术家。我知道通过普通URL访问此路由会返回一个结果。(例如http://localhost:3001/search?artist=%27Linkin%20Park%27)下面是执行此操作的代码: router.get('/search', function(req, res, next) { var artist = req.param('artist'); console.log("
http://localhost:3001/search?artist=%27Linkin%20Park%27
)下面是执行此操作的代码:
router.get('/search', function(req, res, next)
{
var artist = req.param('artist');
console.log("Artist: " + artist);
smartSpot.getArtistID(artist, function(data)
{
console.log("Data: " + data);
res.json(data.id);
});
});
然后,前端有搜索艺术家的代码。这一切都是通过角度
angular.module('smart-spot', [])
.controller('MainCtrl', [
'$scope', '$http',
function($scope, $http)
{
$scope.createPlaylist = function()
{
var artist = $scope.artist;
console.log(artist);
window.open("/login", "Playlist Creation", 'WIDTH=400, HEIGHT=500');
return $http.get('/search?=' + $scope.artist) //this doesn't pass in the artist
.success(function(data)
{
console.log(data);
});
}
}
]);
$http.get()
未正确传入$scope.artist`值。字符串连接中可能缺少“artist”查询参数
$http.get('/search?artist=' + $scope.artist)
或者,您可以将艺术家作为查询参数传递
function createPlaylist() {
return $http.get('/search', { params : { artist : $scope.artist } })
.then(function(response) {
return response;
}, function(error) {
return $q.reject(error);
});
}
另外,我会避免使用.success。我相信这是为了支持上面的语法。第一个参数是成功函数,第二个参数是失败函数。您可以通过
$http.get('/search', {
params: {
artist: $scope.artist
}
})
.success(function(data)
{
console.log(data);
});
哦嗯。是的。我知道这很简单。非常感谢!我们无法理解为什么这不起作用。$q是angular公司管理承诺的服务。如果要在调用$scope.createPlaylist后执行某些操作,则需要从error函数返回$q.reject()。这就是你创建“承诺链”的方式。因此,您可以调用$scope.createPlaylist().then(函数(响应){},函数(错误){})。因此,如果createPlaylist成功,将运行链中的下一个成功函数。如果createPlaylists失败,则链中的下一个失败函数将运行。啊。这是有道理的。