Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs$http.post()调用api在飞行前选项调用中抛出405错误_Javascript_Angularjs_Asp.net Web Api - Fatal编程技术网

Javascript Angularjs$http.post()调用api在飞行前选项调用中抛出405错误

Javascript Angularjs$http.post()调用api在飞行前选项调用中抛出405错误,javascript,angularjs,asp.net-web-api,Javascript,Angularjs,Asp.net Web Api,我试图发布一个api,但我得到了一个“NetworkError405-不允许使用的方法”,我学到的是对服务的飞行前选项调用。对这个问题进行研究后,我得到的答案并不完全是我想要的。我的CORS最初有一个问题,为此我在web服务(web API)中添加了以下内容: 我已经验证了Fiddler的服务是否正常工作,所以我不确定如何从这里解决这个问题。任何帮助都将不胜感激。听起来您的服务器可能需要“application/x-www-form-urlencoded”数据,而实际上您所做的是在帖子正文中发送

我试图发布一个api,但我得到了一个“NetworkError405-不允许使用的方法”,我学到的是对服务的飞行前选项调用。对这个问题进行研究后,我得到的答案并不完全是我想要的。我的CORS最初有一个问题,为此我在web服务(web API)中添加了以下内容:


我已经验证了Fiddler的服务是否正常工作,所以我不确定如何从这里解决这个问题。任何帮助都将不胜感激。

听起来您的服务器可能需要“application/x-www-form-urlencoded”数据,而实际上您所做的是在帖子正文中发送JSON字符串。您可能需要做两件事(假设您不想让API处理JSON):

  • 向标头添加ContentType,传递“application/x-www-form-urlencoded”
  • 将POST数据转换为序列化的“key1=val1&key2=val2”字符串
  • 问题很简单,$http服务的实际工作方式与AJAX调用的工作方式不同。如果搜索“angularjs$http form post”的变体,您可以找到更多关于此的信息


    最后,这是一个有趣的问题解决方案,或者,还有其他一些库使这些事情变得更简单,例如。

    使用$http.jsonp(url)进行api查询

    这个答案对你有帮助吗?我选择这个答案是因为你给了我一个合适的问题来搜索,这导致了这个页面解决了我的问题:哥们,你节省了我很多时间。如果有人对Angular 2(typescript)感兴趣,您需要这样做:让headers=newheaders({'Content-Type':'application/x-www-form-urlencoded'});
      <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
    
    <div class="row">
                    <div class="col-lg-6 col-xs-12">
                        <div class="form-group">
                            <label>First Name*</label>
                            <input type="text" id="txtFirstName" ng-model="firstName" class="form-control" required/>
                        </div>
                    </div>
                    <div class="col-lg-6 col-xs-12">
                        <div class="form-group">
                            <label>Last Name*</label>
                            <input type="text" id="txtLastName" ng-model="lastName" class="form-control" required/>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-6 col-xs-12">
                        <div class="form-group">
                            <label>Company Name*</label>
                            <input type="text" id="txtCompanyName" ng-model="companyName" class="form-control"
                                   required/>
                        </div>
                    </div>
                    <div class="col-lg-6 col-xs-12">
                        <div class="form-group">
                            <label>Your Work Email*</label>
                            <input type="email" id="txtEmail" ng-model="email" class="form-control" required/>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-6 col-lg-offset-3 col-xs-12">
                        <div class="form-group">
                            <label>Office Phone Number*</label>
                            <input type="text" id="txtPhone" ng-model="phone" class="form-control" required/>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-6 col-lg-offset-3 col-xs-12">
                        <div class="form-group">
                            <input type="submit" id="btnDemoSubmit" class="btn btn-default form-control" style="background-color: #053A54; color: #ffffff;" value="Submit For Trial" ng-click="demoInquiry()"/>
                        </div>
                    </div>
                </div>
    
    (function () {
    var app = angular.module("app", [])
    
    app.controller('MainController', function($scope, $http) {
        var onUpdatesComplete = function (response) {
            $scope.updates = response.data;
        };
        $http.get("http://localhost:XXXXX/XXX/XXXXXX/XXXXXXXXXX")
            .then(onUpdatesComplete);
    
    $scope.demoInquiry = function(){
            var data = {
                    firstName : $scope.firstName,
                    lastName : $scope.lastName,
                    companyName : $scope.companyName,
                    email : $scope.email,
                    phone : $scope.phone
            };
            console.log(data);
            $http.post("http://localhost:XXXXX/XXX/XXXXXX/XXXXXXXXXX", data).success(function() {
                $scope.postSuccess = true
            }).error(function(){
                $scope.postError = true;
            });
        };
    });
    }());