从angularjs调用WCF服务返回-1

本文关键字:返回 服务 WCF angularjs 调用 | 更新日期: 2023-09-27 18:05:35

我使用以下代码从angularjs调用WCF服务。此函数将在更改文本框时调用。HTML代码:

<div><input type="text" placeholder="Search for items" id="textFiled" class="input" ng-keydown="checkKeyDown($event)" ng-keyup="checkKeyUp($event)" ng-model="searchText" ng-change="search()" /></div>

javascript代码

//Function To Call On ng-change
    $rootScope.search = function () {
        var searchTextSmallLetters = angular.lowercase($scope.searchText);
        if (searchTextSmallLetters.length > 2) {
            $http({
                method: "GET",
                withCredentials: true,
                url: "http://XX.XXX.XX.XX:XX/Service.svc/Clients?prefix=" + searchTextSmallLetters,
                dataType: "json",
                headers: {
                    'Content-Type': 'application/json; charset=utf-8'
                }
            }).then(function successCallback(response) {
                if (response.status == 200) {
                    alert('success');
                }
                else {
                    alert('fail');
                }
            }, function errorCallback(response) {
                alert(response.status);
                alert('fail');
            });
        }
};

WCF服务运行合同:

[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json,UriTemplate = "/Clients?prefix={prefix}")]
List<string> GetClients(string prefix);

函数失败,给出状态码为"-1"的警告消息。当我在fiddler中检查相同的调用时,它返回搜索的客户端,状态码为200。

希望有人能帮助我这个。任何建议或评论将是伟大的。谢谢你。

从angularjs调用WCF服务返回-1

从记忆中,在过去我得到了类似的行为(-1状态码)从js当:

  • 我正在进行跨域调用,OPTIONS调用失败。使用的框架无法正确处理非200的结果。从https到http或使用不同端口的http(s)都可能导致此问题,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control。我会在Chrome的开发者控制台查看调用是什么,结果是什么(不使用Fiddler!)
  • 调试使用Fiddler进行https调用