将表单数据发布到angularJS

时间:2018-02-15 11:37:17

标签: angularjs

我正在尝试使用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;}

我想也许我需要指定一下这个主体的媒体类型,但是默认似乎是相同的,所以我不知所措。当我在角度尝试这个时,我可以看到请求正在验证服务器,但后来什么也没做,所以相信它与请求体有关。请帮忙。

1 个答案:

答案 0 :(得分:0)

我发现问题实际上是由于我的其他资源位于不同的域上。出于安全原因,浏览器不允许这样做。错误:No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://localhost:8000&#39;因此不允许访问。对于犯同样错误的人,请参阅:XMLHttpRequest cannot load https://www.[website].com/