Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取-使用Ionic刷新后出错_Javascript_Angularjs_Express_Ionic Framework_Gulp - Fatal编程技术网

Javascript 无法获取-使用Ionic刷新后出错

Javascript 无法获取-使用Ionic刷新后出错,javascript,angularjs,express,ionic-framework,gulp,Javascript,Angularjs,Express,Ionic Framework,Gulp,我正在使用Ionic框架构建一个混合移动应用程序,我将html5Mode设置为true、Ui路由器和gulp,为我提供livereload、sass编译、css和javascript缩小功能 问题是,每当我直接从索引导航到某个状态时,一切都正常,向我的服务器发出请求,但当我刷新同一状态时,就会出现“无法获取”错误 我将我的Ionic应用程序与我的Express.JS应用程序分开处理 下面是一些代码: 州 $stateProvider .state('faculties', { ur

我正在使用Ionic框架构建一个混合移动应用程序,我将html5Mode设置为true、Ui路由器和gulp,为我提供livereload、sass编译、css和javascript缩小功能

问题是,每当我直接从索引导航到某个状态时,一切都正常,向我的服务器发出请求,但当我刷新同一状态时,就会出现“无法获取”错误

我将我的Ionic应用程序与我的Express.JS应用程序分开处理

下面是一些代码:

 $stateProvider

 .state('faculties', {
    url: '/',
    templateUrl: 'views/main/main.html',
    controller: 'MainCtrl as main'
  })

  .state('faculty', {
    url: 'faculties/:faculty',
    templateUrl: 'views/faculty/faculty.html',
    controller: 'FacultyCtrl as v'
  })
因此,如果我打开页面,点击按钮,进入“教员”状态,一切都很好。但如果我刷新那个页面,它会给我一个不能得到错误的信息。 以下是“教员”状态控制器的代码:

  app.controller('FacultyCtrl', function ($http, $stateParams, appConfig) {

  var v = this;
  var api = appConfig.api;
  v.faculty = {};

  $http.get( api + '/faculties/' + $stateParams.faculty)
  .then( res => {
    v.faculty = res.data;
  }).catch( error => {
    console.log(error);
  });

});

您遇到的问题是没有将所有可能的URL路由到相同的
index.html

当您第一次加载页面时,比如说,URL是
http://example.com/
,您的web服务器将从您的根目录提供静态文件
index.html
。更改路由时,您的URL最终显示为(例如)
http://example.com/some_page
。这是因为URL是“伪造的”,服务器上没有这样的文件。刷新(或直接转到该URL)时,会从服务器请求该URL,但会失败(因为与以前一样,该文件/文件夹不存在)

您需要做的是将所有请求(不包括API和诸如此类)路由到相同的静态
index.html
,这是所有单页应用程序的标准行为:
路由在客户端完成。

我也有同样的问题,我使用ngroute,所有应用程序在prod或browser中运行正常,但不能与livereload一起使用,错误无法获取,我有一个额外的特殊点,索引文件不在根目录中。在config.xml中,比如说,如何路由所有请求?@Pablote您必须在Web服务器中路由它们。网上有关于如何为您的Web服务器执行此操作的教程,无论是哪种情况。