小编Seb*_*sen的帖子

如何从Axios中的http错误中获取状态代码?

这可能看起来很愚蠢,但是当Axios中的请求失败时,我正试图获取错误数据.

axios.get('foo.com')
    .then((response) => {})
    .catch((error) => {
        console.log(error) //Logs a string: Error: Request failed with status code 404
    })
Run Code Online (Sandbox Code Playgroud)

而不是字符串,是否可以获得具有状态代码和内容的对象?例如:

Object = {status: 404, reason: 'Not found', body: '404 Not found'}
Run Code Online (Sandbox Code Playgroud)

javascript axios

135
推荐指数
9
解决办法
10万
查看次数

Angular 2多个验证器

是否可以在表单字段上有多个验证器?我尝试了这个,但它导致了一些奇怪的错误(字段永远无效,即使满足要求)

this.username = new Control('', Validators.minLength(5), Validators.required);
Run Code Online (Sandbox Code Playgroud)

我如何使用多个验证器?

typescript angular

42
推荐指数
3
解决办法
3万
查看次数

如何在Angular 2中发布FormData对象?

我需要上传一个文件并发送一些json,我有这个功能:

POST_formData(url, data) {
        var headers = new Headers(), authtoken = localStorage.getItem('authtoken');

        if (authtoken) {
            headers.append("Authorization", 'Token ' + authtoken)
        }

        headers.append("Accept", 'application/json');
        headers.delete("Content-Type");

        var requestoptions = new RequestOptions({
            method: RequestMethod.Post,
            url: this.apiURL + url,
            headers: headers,
            body: data
        })

        return this.http.request(new Request(requestoptions))

        .map((res: Response) => {
            if (res) {
                return { status: res.status, json: res.json() }
            }
        })
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我设置content-type为" multipart/form-data"我的服务器抱怨边界,如果我content-type完全删除标头,我的服务器抱怨它" text/plain"支持的媒体类型.

那么,如何使用angular2发送FormData?

file-upload typescript angular2-http angular

42
推荐指数
3
解决办法
9万
查看次数

如何在Angular 2中处理200以外的http状态代码

现在,我做http请求的方式(借用这个答案)是这样的:

POST(url, data) {
        var headers = new Headers(), authtoken = localStorage.getItem('authtoken');
        headers.append("Content-Type", 'application/json');

        if (authtoken) {
        headers.append("Authorization", 'Token ' + authtoken)
        }
        headers.append("Accept", 'application/json');

        var requestoptions = new RequestOptions({
            method: RequestMethod.Post,
            url: this.apiURL + url,
            headers: headers,
            body: JSON.stringify(data)
        })

        return this.http.request(new Request(requestoptions))
        .map((res: Response) => {
            if (res) {
                return { status: res.status, json: res.json() }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,除非如果返回的状态代码不是200,angular2将失败.例如,如果用户想要发布某些东西而服务器返回400,则角度2将抛出异常:

未捕获的异常:[object Object]

我怎么能避免这个?我想在我的应用中处理这些状态代码,以增强用户体验(显示错误等)

typescript angular

37
推荐指数
1
解决办法
9万
查看次数

如何在Angular 2中发布JSON?

我不明白我做错了什么,当我尝试获取json时,我的服务器返回"undefined".

POST(url, data) {
        var headers = new Headers(), authtoken = localStorage.getItem('authtoken');
        headers.append("Content-Type", 'application/json');

        if (authtoken) {
        headers.append("Authorization", 'Token ' + authtoken)
        }
        headers.append("Accept", 'application/json');

        var requestoptions = new RequestOptions({
            method: RequestMethod.Post,
            url: this.apiURL + url,
            headers: headers,
            body: data
        })

        return this.http.request(new Request(requestoptions))
        .map((res: Response) => {
            if (res) {
                return { status: res.status, json: res.json() }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

我的功能:

login(username, password) {
        this.POST('login/', {test: 'test'}).subscribe(data => {
            console.log(data)
        })
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,请求体看起来像这样:

在此输入图像描述

因此,它不是发送实际的json,而是发送"[object Object]".它不应该是"请求有效载荷",而应该是"JSON".我究竟做错了什么?

rest typescript angular

26
推荐指数
2
解决办法
9万
查看次数

使用Angular2处理404

如果输入了无效路径,有没有办法配置Angular2路由器重定向到特定路由?

例如,如果我有三条路线:
/ home
/ about
/ 404

我输入/训练(路线,路线配置中不存在),我希望路由器将我重定向到404.

typescript angular2-routing angular

22
推荐指数
1
解决办法
7371
查看次数

删除 createMediaElementSource

我已经为这个问题到处谷歌,但找不到任何东西。我处于需要删除 asource = createMediaElementSource以便我可以再次创建它的情况。我正在使用音频分析器,每次使用 ajax 加载指定曲目时都必须加载它。一旦你转到另一个页面,然后返回,分析器就消失了。因此我需要以某种方式重新初始化它。

我的代码:

var analyserElement = document.getElementById('analyzer');
var canvas, ctx, source, context, analyser, fbc_array, bars, bar_x,
    bar_width, bar_height;

function analyzerSetElements() {
    var analyserElement = document.getElementById('analyzer');
}

function analyzerInitialize() {
    if (context == undefined) {
    context = new AudioContext();
    }
    analyser = context.createAnalyser();
    canvas = analyserElement;
    ctx = canvas.getContext('2d');
    source = context.createMediaElementSource(audio);
    source.connect(analyser);
    analyser.connect(context.destination);
    frameLooper();
}

function analyzerStop(){
    context = undefined;
    analyser = undefined;
    source = undefined;
}

function frameLooper() {
    canvas.width = canwidth;
    canvas.height …
Run Code Online (Sandbox Code Playgroud)

javascript mediaelement

7
推荐指数
1
解决办法
4467
查看次数

从Audio获取logarithmic byteFrequencyData

我问了一个类似于此前的问题,但它没有解决我的问题并且解释得很差.这次我做了插图,希望能更好地解释.

我的音频播放器有一个简单的频谱分析仪.频率存储在每个都更新的数组中requestAnimationFrame,数组如下所示:

fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多关于getByteFrequencyData的信息.

所以这个工作正常,但我希望频率在整个频谱中均匀分布.现在它显示线性频率:

在此输入图像描述

正如您所看到的,这里的主要频率范围是高音(高端),最主要的频率范围是低音范围(低端).我希望我的分析仪具有均匀分布的频率范围,如下所示:

在此输入图像描述

在这里,您可以看到分析仪上均匀分布的频率.这可能吗?

我用于生成分析器的代码如下所示:

// These variables are dynamically changed, ignore them.
var canbars = 737
var canmultiplier = 8
var canspace = 1

// The analyser
var canvas, ctx, source, context, analyser, fbc_array, bars, bar_x,
    bar_width, bar_height;

function audioAnalyserFrame() {
    'use strict';
    var i;
    canvas.width = $('analyser-').width();
    canvas.height = $('analyser-').height();
    ctx.imageSmoothingEnabled = false;
    fbc_array = new Uint8Array(analyser.frequencyBinCount);
    analyser.getByteFrequencyData(fbc_array);
    ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
    ctx.fillStyle = "white"; …
Run Code Online (Sandbox Code Playgroud)

javascript web-audio-api

7
推荐指数
1
解决办法
808
查看次数

不推荐使用render_to_string的context_instance参数

我正在使用Django 1.9.

随着render_to_string我可以很容易地通过呈现的HTML作为JSON我的客户端脚本.但是,由于模板依赖于变量user,我还需要传递context_instance=RequestContext(request),否则模板不会知道是什么request.user,所以if语句中断等等.

但是我得到了这个弃用警告:

RemovedInDjango110Warning:不推荐使用render_to_string的context_instance参数.response_data ['content'] = render_to_string("profile/userprofile_detail/content.html",context,context_instance = RequestContext(request))

什么是非过时的方式来传递RequestContextrender_to_string

django

7
推荐指数
1
解决办法
3625
查看次数

object()在django 1.10中没有参数

我正在尝试在我的应用程序中允许CORS,以便我的跨域javascript客户端可以访问我的API,我已经安装了django-cors-headers.我现在正在尝试添加中间件:

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # Remove this and it works
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Run Code Online (Sandbox Code Playgroud)

但是这给了我一个TypeError:

TypeError:object()不带参数

这在django 1.10更新之前运行良好.有任何想法吗?

django django-cors-headers

7
推荐指数
2
解决办法
4847
查看次数