我正在尝试使用angularJS将表单数据作为请求主体发布到休息服务,但是我无法使用它来访问资源。如果可以,请帮忙..
我有这样的服务......
angular.
module('core.search').
factory('Search', ['$resource',
function($resource) {
return $resource('http://localhost:8888/PROJECT/rest/search, {}, {
query: {
method: 'POST',
isArray: true
}
});
}
]);
像这样的组件......
angular.
module('vehicleSearch').
component('vehicleSearch', {
templateUrl: 'vehicle-search/vehicle-search.template.html',
controller: ['Search',
function VehicleSearchController(Search) {
this.vehicles = [];
this.searchVehicles = function(vehicleSearchForm) {
this.vehicles = Search.query([], JSON.stringify(vehicleSearchForm));
};
}
]
});
和这样的模板......
<div>
<h4>Vehicle Search</h4>
<form ng-submit="$ctrl.searchVehicles(vehicleSearchForm)">
<table>
<tr>
<td><label for="vrm" >VRM: </label></td>
<td><input type="text" id="vrm" name="vrm" ng-model="vehicleSearchForm.vrm" /></td>
<td><input type="text" id="type" name="type" ng-model="vehicleSearchForm.type" /></td>
</tr>
<tr>
<td><input type="submit" value="search"/></td>
</tr>
</table>
<br>
<table>
<tr>
<td>VRM</td>
<td>Make</td>
<td>Model</td>
<td>Colour</td>
<td>Date Registered</td>
</tr>
<tr ng-repeat="vehicle in $ctrl.vehicles">
<td>{{vehicle.vrm}}</td>
<td>{{vehicle.make}}</td>
<td>{{vehicle.model}}</td>
<td>{{vehicle.colour}}</td>
<td>{{vehicle.dateFirstReg}}</td>
</tr>
</table>
</form>
我知道资源正在返回数据,因为我可以通过我的测试工具调用它,其中一个请求体与媒体类型application / json类似。 {&#34;类型&#34; :&#34; vehicleSearchRequest&#34;,&#34; searchReason&#34; :&#34; 01&#34;,&#34; vrm&#34; :&#34; ABC123&#34;}
我想也许我需要指定一下这个主体的媒体类型,但是默认似乎是相同的,所以我不知所措。当我在角度尝试这个时,我可以看到请求正在验证服务器,但后来什么也没做,所以相信它与请求体有关。请帮忙。
答案 0 :(得分:0)
我发现问题实际上是由于我的其他资源位于不同的域上。出于安全原因,浏览器不允许这样做。错误:No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://localhost:8000&#39;因此不允许访问。对于犯同样错误的人,请参阅:XMLHttpRequest cannot load https://www.[website].com/