【问题标题】:AngularJS threw error after successful GET request成功 GET 请求后 AngularJS 抛出错误
【发布时间】:2013-09-18 17:06:27
【问题描述】:

通过这段代码,我正在尝试从服务器获取数据

$scope.get_file_list = function() {
            delete $http.defaults.headers.common['X-Requested-With']; //We don't wat OPTIONS but GET request
            $http({method: 'GET', url: backendUrl + '/session/' + $scope.id + '/list'})
                .success(function(data, status, headers, config) {
                    // ...
                })
                .error(function(data, status, headers, config) { console.log(
                    'error\ndata: '+data+
                    '\nstatus: '+status); });

服务器:

from flask import Flask, request
from werkzeug import secure_filename
import glob, os


app = Flask(__name__)

@app.route('/session/<session_id>/list', methods = ['GET'])
def get_file_list(session_id):
        # ...

@app.route('/session/<session_id>/upload', methods = ['POST'])
def upload_file(session_id):
        # ...

if __name__ == '__main__':
        app.run(debug = True, port=80)

这是浏览器的控制台输出

[18:58:37.409] "error
data: 
status: 0

服务器以代码 200 响应,当我用浏览器测试它时一切正常(服务器发送数据而控制台中没有任何警告)。 也许我应该用 jQuery 来做这个?

【问题讨论】:

  • 你能显示输出数据吗
  • 是的,当然:file.test file.test.1 text.txt
  • 这是字符串格式的
  • 我想我不明白你。是的,服务器以简单的字符串响应(列出 od 文件,以 ' ' 分隔)

标签: javascript python angularjs flask


【解决方案1】:

状态码 0 可能是由于跨域请求(即 webapp 在 foo.com 而服务器在 bar.com)或无法访问的服务器。有关更详细的解释,请查看答案

ajax status = 0

jQuery Ajax - Status Code 0?

【讨论】:

  • 不,服务器地址为127.0.0.1,请求到达服务器。
  • 您能否在浏览器(chrome)的网络选项卡中查看请求状态。看看你是否在状态中得到“取消”。
  • 在 Chromium 控制台中有“XMLHttpRequest cannot load 127.0.0.1/session/test_session/list. Origin localhost:9000 is not allowed by Access-Control-Allow-Origin.”。 Firefox 没有显示这一点。通过谷歌,我发现 Ajax 请求无法发送到其他域甚至其他端口。我应该从为整个网站提供服务的同一台服务器上提供数据
  • 你需要从 127.0.0.1:9000 而不是 localhost:9000 访问你的 webapp。
猜你喜欢
  • 2019-12-02
  • 1970-01-01
  • 2021-08-25
  • 2015-11-18
  • 1970-01-01
  • 2018-06-01
  • 2021-12-04
  • 2021-05-04
  • 1970-01-01
相关资源
最近更新 更多