gpt4 book ai didi

javascript - AngularJS 新手,ngResource 问题

转载 作者:行者123 更新时间:2023-12-03 11:28:21 24 4
gpt4 key购买 nike

首先要注意的是,我是 AngularJS 的新手,我尝试使用 reed.co.uk API 创建我的第一个应用程序,因此,请不要关闭我..! :)

我的应用程序的当前状态非常基本,包含以下内容:

index.html

<!DOCTYPE html>
<html lang="en" ng-app="reed" class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Reed Start Up App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap-theme.min.css" />

<link rel="stylesheet" href="app.css">
<script src="bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js"></script>
</head>
<body>
<div class="container">
<div ng-view></div>
</div>

<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-resource/angular-resource.min.js"></script>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="app.js"></script>
<script src="components/services/services.js"></script>
<script src="viewHome/home.js"></script>
</body>
</html>

app.js

'use strict';

// Declare app level module which depends on views, and components
angular.module('reed', ['ngRoute', 'reed.home', 'reedService'])
.config(['$routeProvider', function($routeProvider){
$routeProvider.otherwise(
{
redirectTo : '/'
}
);
}]);

home.js

'use strict';

angular.module('reed.home', ['ngRoute', 'reedService'])
.config(['$routeProvider', function($routeProvider){
$routeProvider.when(
'/', {templateUrl : 'viewHome/home.html', controller : 'HomeCtrl'}
);
}])
.controller('HomeCtrl',['$scope', 'Jobs', function($scope, jobs){
$scope.performSearch = function()
{
console.log(
jobs.query(
{
keywords : $scope.jobTitle
},
{
method : 'GET',
headers : {
username : '9f0ebf61-8795-49d7-a1d7-123456789123'
}
}
)
);
};}
]);

home.html

<div class="row">
<div class="col-sm-12">
<form role="form">
<div class="form-group">
<label form="job-title">
Job Title
</label>
<input ng-model="jobTitle" id="job-title" placeholder="Please enter your desired job title" class="form-control" type="text" />
</div>
<div>
<button type="submit" class="btn btn-default" ng-click="performSearch()">Submit</button>
</div>
</form>
</div>
</div>

services.js

'use strict';

var jobsServices = angular.module('reedService', ['ngResource']);

jobsServices.factory('Jobs', ['$resource', '$http', function($resource, $http){
return $resource(
'http://www.reed.co.uk/api/1.0/search',
{},
{
query : {
method : 'GET',
headers : {
username : '9f0ebf61-8795-49d7-a1d7-123456789123'
}
}
}
)
}]);

Reed.co.uk API 文档说明如下:

重要:

您需要将所有请求的 API key 作为用户名包含在基本身份验证 http header 中,并将密码留空。

根据上述消息,我尝试将 API key 设置为请求 header 中的用户名。当我在 Chrome 上使用 API 请求插件尝试上述方法时,请求正常。我通常会毫无问题地得到我所要求的任何内容。

在我的 AngularJS 应用程序中,问题是当我发送 GET 请求时,当我发送 GET 请求时,AngularJS 将我的请求方法更改为 OPTIONS设置我的标题。

如果我删除 header ,则使用 GET 执行请求,但当然我会从服务器收到 Unnothorized request 错误。

有人可以帮我吗?

最佳答案

问题不是特定于 Angular 。回答here还不错:

The OPTIONS request what you see is the preflight request, you can read about that here:

There are two solutions to solve the problem (as mentioned above):

  • implement the response for the OPTIONS request with the corresponding Access-Control-* headers
  • use a JSONP request instead of simple JSON

关于javascript - AngularJS 新手,ngResource 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826757/

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