【问题标题】:Resource interpreted as Document but transferred with MIME type application/json资源解释为 Document,但使用 MIME 类型 application/json 传输
【发布时间】:2017-03-19 22:04:36
【问题描述】:

我正在编写基于节点和角度的代码。代码将 url 作为输入,检查 url 是否存在于数据库中,如果不存在,则创建它。 该请求是从角度代码发出的。当 localhost 在没有尾随 url 的情况下运行时,angular 能够打开主页,但是当给出 url 时,请求没有到达 angular 控制器,并且浏览器响应错误Resource interpreted as Document but transferred with MIME type application/json
我已经查看了 S.O. 上的现有解决方案。但没有一个工作。请帮忙。

binder.js(angular)

    'use strict';
    var app = angular.module('clip',['ngRoute','ngResource'])
    app.config(function($routeProvider,$locationProvider){
       $routeProvider.
       when('/',{
         templateUrl:"main.html",
       }).
       when('/:url',{
         templateUrl:'url.html',
         controller: "url"
       })
       $locationProvider.html5Mode({enabled:true})
    });

     app.controller("url",function($scope,$http,$routeParams){
       $scope.load = function(){
          var urls = $routeParams.url;
          console.log("inside angular code");
          $http.get('/:url').success(function(result){
            if(result.exists) {
            $scope.content = result.content;
            $scope.exists=false;
            }
            else {
              $scope.exists = true;
              $scope.content="";
            }
          })
        }
      })

index.js

    var express = require('express');
    var db = require('./models.js');
    var bodyParser = require('body-parser');
    var app = express();

    app.use(express.static(__dirname+"/public"))
    app.use(bodyParser.urlencoded({extended:true}))
    app.use(bodyParser.json())

    app.set('port',(process.env.PORT||5000));

    app.get('/',function(req,res){
      res.sendFile('index.html')
    })

    app.route('/:url')
    .get(function(req,res){
      res.setHeader('Content-Type','application/json');
      db.find({url:req.params.url},function(err,data){
        if(data.length == 0){
          res.json({
            exists:false
          })
        }
        else {
          // TO-DO: delete from database
          res.json({
            exists:true,
            data:data[0].content
          })
        }
      })
    })

    app.listen(app.get('port'),function(){
      console.log("Magic happens at port "+app.get('port'));
    });


index.html(主页)

    <!DOCTYPE html>
    <html ng-app='clip'>
      <head>
        <base href="/" />
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>MyCLips</title>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-route.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-resource.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
        <script src="js/binder.js"></script>
      </head>
      <body>
        <div ng-view>
        </div>
      </body>
    </html>

url.html

    <div class="container-fluid" data-ng-init="load()">
      <form>
        <div class="form-group">
          <textarea class="form-control" required="required" rows="10" cols="10" placeholder="paste your data here" ng-model="content"></textarea>
          <button type="submit" class="btn btn-success" ng-click="submit()" ng-show="exists">Create</button>
        </div>
      </form>
    </div>

【问题讨论】:

    标签: javascript angularjs json node.js


    【解决方案1】:

    我找到了解决问题的方法。我正在从角度和节点向相同的 url 发出请求。所以响应是直接从节点传递的,没有将内容传递给 angular,并且由于预期要呈现的内容是一个文档,并且响应是 json 格式,所以我收到了这个错误。我更改了搜索数据库的url('/find/:url'),并简单地在url('/:url')上方渲染index.html,以便angular可以在节点呈现html页面时请求新的数据url,并且它起作用了。

    【讨论】:

    • 刚刚遇到同样的问题并浪费了 45 分钟试图弄清楚发生了什么。可笑的令人沮丧的问题,但感谢您发布解决方案。
    【解决方案2】:

    好的..所以您的路由提供程序不起作用..在您的 url 控制器中,您使用 $http 依赖项,所以..Resource interpreted as Document but transferred with MIME type application/json 表示您接收的对象不是 json..

    <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-route.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-resource.js"></script>
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
            <script src="js/binder.js"></script>
    

    我认为你没有包含 index.js..

    【讨论】:

    • index.js 是后端文件,我认为我不应该将它包含在任何地方。
    猜你喜欢
    • 2017-07-10
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2011-09-29
    • 2017-05-12
    • 2011-12-04
    相关资源
    最近更新 更多