1

嗨,我是 AngularJS 的新手。我从本教程开始。在教程中$http.get方法是调用一个 JSON 文件。就我而言,我总是收到 404 错误。JSON 文件的位置也与 HTML 文件相关。但总是得到同样的错误。

这是我的代码:index.html:

<!doctype html>
<html lang="en" ng-app>
<head>
<meta charset="utf-8">
  <title>My HTML File</title>
  <script src="angular.js"></script>
  <script src="controllers.js"></script>
</head>
<body ng-controller="PhoneListCtrl">
 Total Number of phones: {{phones.length}}
 Search: <input ng-model="query">
 Sort by:
<select ng-model="orderProp">
  <option value="name">Alphabetical</option>
  <option value="age">Newest</option>
</select>
<div>
  <ul>
    <li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
  {{phone.name}}
  <p>{{phone.snippet}}</p>
    </li>
  </ul>
</div>

</body>
</html>

控制器.js

function PhoneListCtrl($scope, $http) {
$http.get('phones.json').success(function(data){
$scope.phones = data;
}).
error(function(data, status, headers, config) {
alert('data = ' + data + ' status = ' + status);
});
}

同一目录中的所有文件(index.html、controllers.js、phones.json)。我在这里想念什么?为什么会抛出 404 错误?

以下是所附的浏览器截图: 下面附上浏览器截图:1

4

5 回答 5

2

刚看到这个。我认为问题在于您的 Web 服务器未配置为服务器 JSON MIME 类型。如果您使用的是 IIS Express(和 Visual Studio),请查看如何将 JSON MIME 类型添加到 IIS。

http://michaellhayden.blogspot.ca/2012/07/add-json-mime-type-to-iis-express.html

于 2013-11-28T03:55:42.527 回答
2

JSON 的 MIME 类型需要添加到 IIS 服务器。

对于 IIS,请访问您的网站,然后 MIME 类型并添加

文件扩展名:.json

MIME 类型:应用程序/x-javascript

于 2014-02-13T06:47:56.523 回答
2

文件是否在同一目录中无关紧要。您需要一个服务器来托管文件并响应 GET、POST PUT 和其他 http 请求。

本教程的第一步要求您设置服务器。请参阅教程中标题为“使用代码”的部分。请参阅该步骤的评论/讨论,以获取有关设置服务器的更多信息。

如果 nodeJs 似乎太难使用,那么一个简单的 Python 服务器也可以。您也可以使用 Apache / WAMP / XAMP 服务器。

如果没有设置服务器,您将无法构建教程中描述的应用程序,因为 http 请求将失败 - 404 错误因此很明显。

于 2013-08-29T08:41:03.437 回答
0

问题与角度无关,这意味着您请求的文件不在您(或您的脚本)认为的位置。
根据您使用的浏览器,例如在 chrome 中,打开检查器(右键单击,检查元素)并在 404 错误中的控制台中检查您的应用程序尝试获取的文件的完整路径,然后检查您的服务器你实际上在那个目录中有那个文件。您还可以在网络选项卡中检查应用程序发出的每个请求,以获取有关问题可能原因的更多信息。
我看到您没有使用服务器,那么您的地址栏应该显示类似file:///path/to/index.html的内容,并且带有 404 错误的文件的路径可能file:///angular.js应该是file:///path/to/angular.js.
编辑:如果带有 404 的文件是file:///angular.js这意味着浏览器正在查找系统根目录中的文件,而不是当前目录中的文件,然后尝试使用相对路径,例如<script src="./angular.js"></script>.
我还认为您将在 ajax 请求中遇到跨源请求问题phones.json。这就是为什么我建议您改为设置本地服务器。

于 2013-08-29T13:49:23.563 回答
-1

您没有在 html 文件中包含任何模块。

于 2013-08-29T11:28:39.273 回答