【问题标题】:Angular http returning error in Phone gap but success in browser角http在电话间隙中返回错误,但在浏览器中成功
【发布时间】:2015-02-19 20:42:57
【问题描述】:

我在 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);
        });
    },

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

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

【问题讨论】:

标签: javascript angularjs cordova http


【解决方案1】:

我 99.9% 确定这是因为跨域 ajax 加载。尝试按照此处的建议启用 Access-Control-Allow-Origin How to enable CORS in AngularJs 或尝试按照此处的建议为您的应用程序的跨域启用白名单 Phonegap-Javascript sending cross-domain ajax request

最终,如果没有任何效果并且您控制了服务,您可以尝试更改响应标头,但其中一个很可能会为您服务。

【讨论】:

  • 您好,这不是 CORS 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 2023-03-20
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多