Jquery angular2 post错误参数
我正在开发一个与Yandex Translate API通信的Angular2应用程序 当我使用http发送POST请求时,我遇到了一个问题,但它可以使用jQuery.ajax 我的代码:Jquery angular2 post错误参数,jquery,ajax,angular,Jquery,Ajax,Angular,我正在开发一个与Yandex Translate API通信的Angular2应用程序 当我使用http发送POST请求时,我遇到了一个问题,但它可以使用jQuery.ajax 我的代码: var url = "https://translate.yandex.net/api/v1.5/tr.json/translate"; var key = "API_KEY"; var fromTo = this.from + '-' + this.to; var data =
var url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
var key = "API_KEY";
var fromTo = this.from + '-' + this.to;
var data = {
text: this.typedText,
key : key,
lang: fromTo
};
使用jQuery:
$.ajax({
type: "POST",
url: url,
data: data,
success: $.proxy(function (data) {
this.result = data.text;
}, this),
error: $.proxy(function () {
Materialize.toast('One language is not supported by Yandex.', 3000)
}, this),
});
使用angular2 http.post:
this.http.post(url, JSON.stringify(data))
.map(res => res.text())
.subscribe(
data => this.result = data.text,
error => this.displayError('One language is not supported by Yandex.')
);
jQuery和http响应之间存在差异的屏幕截图:
谢谢你的帮助
更新1:更改标题
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post(url, JSON.stringify(data), {
headers :headers
})
.map(res => res.text())
.subscribe(
data => this.result = data.text,
error => this.displayError('One language is not supported by Yandex.')
);
在jQuery中,有效负载使用url编码数据,Angular2使用JSON 您需要手动创建负载,而不是使用stringify方法。诸如此类:
let headers = new Headers();
headers.append('Content-type ', 'x-www-form-urlencoded');
http.post('http://...', 'key=something&text=value&lang=en',
{ headers: headers });
希望它能帮助你,
Thierry可能我试图更改标题,但仍然有相同的错误(sse我的更新)。谢谢,它与您的示例一起工作。有一种方法可以在字符串中转换我的数据对象,比如“key=something&other=value”?您还需要更新有效负载的结构。。。我更新了m'y的答案;-)也许您可以查看请求选项的搜索属性:。我知道你可以在以后的参数?在url中。但我不知道它是否设置在我需要测试的post请求的情况下的正文中。。。