使用 DNN7 在 http put status 400 中获取 Angular js + Type Script 错误

Posted

技术标签:

【中文标题】使用 DNN7 在 http put status 400 中获取 Angular js + Type Script 错误【英文标题】:Getting Error in Angular js + Type Script in http put status 400 using DNN7 【发布时间】:2015-08-16 07:38:39 【问题描述】:

我已经使用 angular js 实现了一个控制器,并使用 dot net nuke 7 键入脚本。并尝试使用 http.put 调用我的 web api 方法,但状态错误为 400。 这是我的控制器代码:-

var customerapp = angular.module('CustomerSearch');
module CustomerSearch.controllers

    export class CustomerCtrl 
        static $inject = ['$scope', '$http', '$templateCache'];
        debugger;
        constructor(protected $scope: ICustomerScope,
            protected $http: ng.IHttpService,
            protected $templateCache: ng.ITemplateCacheService) 
            $scope.search = this.search;
            console.log(angular.element($scope).scope());
        
        public search = (search: any) => 
            debugger;
           var Search = 
                ActId: search.txtAct,
                checkActiveOnly: search.checkActiveOnly,
                checkParentsOnly: search.checkParentsOnly,
                listCustomerType: search.listCustomerType
            ;

            this.$scope.customer = [];
            this.$scope.ticket = [];
            this.$scope.services = [];


            this.$http.put('<%=ResolveUrl("~/API/Search/PutDoSearch")%>', Search).
                success((data, status, headers, config) => 
                debugger;
                this.$scope.cust_File = data[0].customers;
                this.$scope.ticket_file = data[0].tickets;
                this.$scope.service_file = data[0].services;
            ).
                error((data, status) => 
                debugger;
                console.log("Request Failed");
                alert(status);
                );

        
    
    var customerapp = angular.module("CustomerSearch", []);
    customerapp.controller('CustomerCtrl', CustomerSearch.controllers.CustomerCtrl);

【问题讨论】:

您能提供完整的错误堆栈跟踪吗? 我已将我的状态置于警报状态,它给了我 400? 我不认为 可以在打字稿文件中使用。您应该提供正确的网址。 但这是我可以在 dotnetnuke 框架中使用的唯一语法 【参考方案1】:

你应该摆脱

this.$http.put('<%=ResolveUrl("~/API/Search/PutDoSearch")%>', Search)

改为使用:

this.$http.put("/API/Search/PutDoSearch", Search)

【讨论】:

【参考方案2】:

您需要让服务器为您解析&lt;%=ResolveUrl("~/API/Search/PutDoSearch")%&gt;

你可以这样做的一种方法是放在一个脚本标签中,例如

<script>
       var doSearchUrl = '<%=ResolveUrl("~/API/Search/PutDoSearch")%>';
</script>

然后在你的打字稿中有

// At the root of your file
declare var doSearchUrl:string; 

// And later
this.$http.put(doSearchUrl, Search)

【讨论】:

你好 baratthanx 为你的时间,但我在我的视图页面或哪里定义了这些脚本,以及关于声明,我也尝试在我的控制器中做同样的事情,最后在我有的地方声明它定义了我的角度应用程序,但它给了我“未定义”的错误

以上是关于使用 DNN7 在 http put status 400 中获取 Angular js + Type Script 错误的主要内容,如果未能解决你的问题,请参考以下文章

SVN 提交失败 Unexpected HTTP status 200 'OK' on 'PUT' request to

Restful风格,PUT修改功能请求,表单中存在文件报错-HTTP Status 405 - Request method 'POST' not supported

Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

转 Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

记录一下 http status code

在java中的http PUT请求中发送一个整数