我试图在Typescript中找到HTTP post请求的示例,但只能找到使用Angular的示例。有人能指出我正确的方向找到这个或发布一个快速示例,使用Post with JSON数据来获得响应JSON。
答案 0 :(得分:4)
如果要在TypeScript中使用本机JavaScript函数来处理HTTP POST请求,请查看YouMightNotNeedJQuery.com上的JSON和POST示例。使用它,您可以实现自己的:
// Using callbacks:
function request<Request, Response>(
method: 'GET' | 'POST',
url: string,
content?: Request,
callback?: (response: Response) => void,
errorCallback?: (err: any) => void) {
const request = new XMLHttpRequest();
request.open(method, url, true);
request.onload = function () {
if (this.status >= 200 && this.status < 400) {
// Success!
const data = JSON.parse(this.response) as Response;
callback && callback(data);
} else {
// We reached our target server, but it returned an error
}
};
request.onerror = function (err) {
// There was a connection error of some sort
errorCallback && errorCallback(err);
};
if (method === 'POST') {
request.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded; charset=UTF-8');
}
request.send(content);
}
// Using promises:
function request2<Request, Response>(
method: 'GET' | 'POST',
url: string,
content?: Request
): Promise<Response> {
return new Promise<Response>((resolve, reject) => {
request(method, url, content, resolve, reject);
});
}
XMLHttpRequest
是一个内置的JavaScript类,包含在TypeScript类型中。
答案 1 :(得分:2)
这是我使用Typescript调用GET或POST的非常简单的示例。
//-------------------------------------------------
// Simple function to GET or POST
function httpCall(method: string, url:string, data:any, callback:(result:any)=>any) {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
if (callback) xhr.onload = function() { callback(JSON.parse(this['responseText'])); };
if (data != null) {
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(data));
}
else xhr.send();
}
可选输入数据(帖子正文)和回调。假设数据和结果都是JSON。
答案 2 :(得分:1)
发送表单数据。
Save(model: yourmodalarray[]): Observable<any> {
var formData: FormData = new FormData();
formData.append('id', '');
const headers = new Headers({
'Accept': 'application/json',
'enctype': 'multipart/form-data'
});
const options = new RequestOptions({ headers: headers });
return this._http
.post(this._baseUrl + 'Save', formData, options)
.map(res => <any>res.json())
.catch(this.handleError);
}