以下代码有什么问题?我一直听到以下错误。 ajax的响应是纯文本,例如“Hello world”。 $ http.get()是否需要json响应?
angular.js:13550 SyntaxError:位置1的JSON中出现意外的标记t at Object.parse(native) at uc(https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:17:36) 在ac(https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:91:229)
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc2/angular-material.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc2/angular-material.min.js"></script>
<script>
var resourceApp = angular.module("resourceApp", [ "ngMaterial" ])
.controller('resourceController', function resourceController($scope, $http) {
$scope.processForm = function() {
$http.get("test")
.then(function(response) {
console.log(response.data);
});
};
});
</script>
</head>
<body ng-app="resourceApp" ng-controller="resourceController">
<button ng-click="processForm()">Submit</button>
<pre>{{response}}</pre>
</body>
</html>
答案 0 :(得分:1)
第二个问题 不必要。您应该在服务器和前端配置中检查实际上是否允许您接收纯文本作为响应。
The official $http documentation可以帮助您正确设置标题,同时我还会检查您的服务器配置。
第一个
是&#34;测试&#34;一条有效的路线?似乎$ http试图得到&#34;测试&#34;作为一个纯文本,而不是存储在&#34; test&#34;后面的资源,因为不正确的字符是&#39; t&#39;。否则(如果是有效路线),请参考上述答案。
修改强>
调用$ http(即使在 localhost 中)时,您必须提及资源的完整路径。在这里,你不能直接调用(&#34; test&#34;),它将它解释为普通的&#34;测试&#34;请求。试着打电话:
$http.get('localhost:[your port]/test').then { ...what you need to do... });
第二次编辑
配置时, text/plain
和plain/text
会有所不同,请小心!这解决了提问者的问题。