2017-08-01 57 views
2

在angular 4中我使用了一個代碼片段,例如:values.join不是文件中的函數http.es5.js Angular 4

let h = [{Content: 'application/json'}]; 

this.http.post(server, this.userDataObj, {headers: h})..... 

所以基本上我想在我的ajax調用中添加一個頭文件。

現在,我不斷收到一個錯誤

ERROR TypeError: values.join is not a function

我檢查了錯誤的位置,我發現在文件http.es5.js有一個代碼等;

req.headers.forEach(function (name, values) { 
     return xhr.setRequestHeader(name, values.join(',')); 
}); 

現在我加入了console.log(req.headers)只是片段上方,和我;

[Object] 
     0:Object 
     Content: 'application/json' 

現在據我知道在JS陣列forEach循環內部函數採用第二個參數(這是在http.es5.js值)是該元素的索引。我通過console.log(values)進行了測試,結果爲0.因此,values.join不是函數,它永遠不會是整數函數。

我試過了;

var headers = new Headers(); 
headers.append("Content", 'application/json'); 

this.http.post(server, this.userDataObj, {headers: headers}).subscribe(..... 

這也給我同樣的錯誤。

試過這個;

var h = new Headers(); 
h.append("kkk", 'aaa'); 
let options = new RequestOptions({ headers: h }); 

this.http.post(server, this.userDataObj, options).subscribe(..... 

同樣的錯誤。

這是一個錯誤?或者我犯了什麼錯誤? 任何想法對我都很有幫助。 PS:我是Angular4的新手。

+0

標題不是數組。他們是'''RequestOptions'''對象。這個SO問題應該幫助https://stackoverflow.com/questions/41133705/how-to-correctly-set-http-request-header-in-angular-2 – Wainage

+0

我試過你提到的問題的接受答案,仍然是相同的錯誤。我現在試圖提到的問題。請檢查。我現在變得無能爲力了。 :( –

回答

2

您需要使用angular/httpHeaders將標頭添加到請求中。

第一次使用這些進口

import { Http, Headers} from '@angular/http'; 

然後添加標題這樣

var headers = new Headers(); 

headers.append("Content", 'application/json'); 

this.http.post(server, this.userDataObj, {headers: headers }) 
+0

我也試過了,現在試過了,但是我得到的同樣的錯誤。 –

4

角4.3:

import {HttpClient, HttpHeaders} from '@angular/common/http'; 
+0

創建頭文件爲... new HttpHeaders({'Content-Type':'application/json','content-language':' en'})。 –

-1
import { HttpClient, HttpHeaders } from '@angular/common/http'; 
import { Api } from '../../providers/providers'; 


export class demo{ 

    response: any;  

    constructor(public api: Api){ 
    this.apiCall(); 
    } 
    apiCall(){ 
    var headers = new HttpHeaders({ 
    'Content-Type': 'application/json', 
    'token': 'token_demo' 
     }); 

     this.response = this.api.post("services/user", {}, { headers: headers }); 
     this.response.subscribe((data) => { 
     console.log('data : ' + data); 
     }, err => { 
     console.error("error = ", err); 
     } 
    } 
} 

這是工作在... .....