我有一个控制器,出于某种原因,通过AngularJs中的get请求提交表单两次。我可以在我的数据库中看到表单正在提交两次,并且在控制台网络选项卡中,它正在记录两个提交,但是,第一个提交具有OPTIONS的“请求方法”,第二个提交是GET。我认为这可能是一个线索。我有点困惑,因为我没有将任何“选项”传递给get方法,只是我提交的URL。
HTML:
<div class="row">
<div ng-controller="groupEditCtrl">
<form class="span11" name="" novalidate ng-submit="createArtifact()">
<legend>Create a new group</legend>
<div class="row">
<div class="span5">
<div class="control-group">
<div class="controls">
<input name="text" type="text" placeholder="Group Name" required ng-model="artifact.group_name" />
</div>
</div>
</div>
<div class="span5">
<p>
<small>What your artifact will look like:</small><br />
{{artifact.group_name}}
</p>
</div>
</div>
<input name="token" type="hidden" required ng-model="window.token" />
<div class="control-group">
<div class="controls controls-row">
<button type="submit" class="btn" value="Submit" title="Submit">
<span>Submit</span>
</button>
</div>
</div>
</form>
</div>
</div>
控制器:
'use strict';
function groupEditCtrl($scope, $http, $routeParams, $cookie) {
$scope.createArtifact = function(){
var requestURL = window.base_url + "/Group/CreateGroup?callback=JSON_CALLBACK&token=" + window.token + "&group_name=" + $scope.artifact.group_name;
$http.get( requestURL ).
success(function(data, status, headers, config) {
console.log('You have successfully submitted a Cause/CreateCause');
}).
error(function(data,status,headers,config){
console.log('You have FAILED submitting a Cause/CreateCause');
});
}
};
答案 0 :(得分:2)
HTTP选项请求正在向服务器询问它可以与服务器通信的允许方法(以及其他内容),因此它是正常的事情。
选项请求不应该更改后端中的任何内容,但可能会在您查看时记录。仔细检查它是否有任何改变(如果是,那么你的后端可能配置错误,如果是,你应该问另一个问题!)。
关于OPTIONS然后GET你的角度设置/使用没有任何问题。
答案 1 :(得分:1)
对我来说标题:{&#39;内容类型&#39;:未定义}工作,我再也看不到它了两次。
$http.post("index.php", {id : $scope.A},{
headers: {'Content-Type': undefined}})
.success(function (response) {
$scope.OK = response.POLL;
}
}
答案 2 :(得分:0)
原来这是我自己不知道的自定义api的问题。