Angular http在Phone gap中返回错误,但在浏览器中成功

Angular http returning error in Phone gap but success in browser

本文关键字:浏览器 成功 错误 返回 Phone gap Angular http      更新时间:2024-01-28

我正在Angular JS中发出HTTP请求。

这在浏览器中运行良好,并成功返回数据。但是,当我在设备上测试Phonegap的使用情况时,它会返回错误

请求的数据从控制器传递到工厂,下面是我用于发出请求的代码示例。

HTML

<ul>
    <li ng-repeat="story in stories" ng-click="setUser(story.name)">
        <img ng-src="{{ story.img }}" width="120" height="108" />
            <div>
                <h2>{{ story.name }}'s Story</h2>
                <p>{{ story.title }}</p>
            </div>
    </li>
</ul>

此HTML调用ng-click上的函数setUser(story.name),该函数在ng repeat中传递用户的当前名称。

控制器

$scope.setUser = function (story) {
    $scope.chosenStory = story;
    dataFactory.setUser($scope.chosenStory); // HTTP call
}

上面的控制器从HTML的ng-click="setUser(story.name)"中获取值,并将其发送到factory以进行HTTP请求。

工厂

setUser : function (val) {
    window.alert(val);
    var username = val;
    window.alert(val);
    $http.get('./js/json/scenarios/' + username + '.json')
        .success(function (data) {
            window.localStorage.setItem("users", JSON.stringify(data));
            $location.path('/story');
        })
        .error(function (data, status) {
            window.alert(val);
            window.alert(data);
            window.alert(status);
        });
    },

在谷歌的控制台中,它记录来自HTTP请求的成功内容。然而,当我在设备上测试Phonegap时,它总是返回HTTP请求的错误内容。例如,它总是从HTTP请求的错误函数返回window.alert。

我做错了什么/没做错什么?提前谢谢。

我敢肯定99.9%这是因为跨域ajax加载。尝试按此处建议启用Access Control Allow Origin如何在AngularJs中启用CORS或按此处建议为应用程序的跨域启用白名单Phonegap Javascript发送跨域ajax请求

最终,如果什么都不起作用,并且您控制了服务,您可以尝试更改响应标头,但很可能其中一个会为您服务。