Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
邮政';x-www-form-urlencoded';使用aurelia获取客户端获取内容_Aurelia_Aurelia Fetch Client - Fatal编程技术网

邮政';x-www-form-urlencoded';使用aurelia获取客户端获取内容

邮政';x-www-form-urlencoded';使用aurelia获取客户端获取内容,aurelia,aurelia-fetch-client,Aurelia,Aurelia Fetch Client,问题很简单:如何使用Aurelia Fetch client发布x-www-form-urlencoded内容 我需要发布到一个简单的ASP.NETWebAPI服务器,该服务器使用OWIN和Katana进行身份验证 我已经尝试过的一个例子: var loginDTO = new FormData(); loginDTO.append('grant_type', 'password'); loginDTO.append('email', 'test'); loginDTO.append('pass

问题很简单:如何使用Aurelia Fetch client发布
x-www-form-urlencoded
内容

我需要发布到一个简单的ASP.NETWebAPI服务器,该服务器使用OWIN和Katana进行身份验证

我已经尝试过的一个例子:

var loginDTO = new FormData();
loginDTO.append('grant_type', 'password');
loginDTO.append('email', 'test');
loginDTO.append('password', 'test');

return this.http
    .fetch(config.router.token, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: loginDTO
    });

显然,这并没有达到预期效果。发布示例中显示的数据的正确方法是什么?

aurelia fetch客户端是基于fetch规范构建的,fetch似乎总是以
内容类型:多部分/表单数据
的形式发送
FormData

要解决这个问题,您必须将参数转换为查询字符串,然后将内容类型设置为
x-www-form-urlenconed
。可以使用jQuery或自定义函数将对象转换为查询字符串。像这样:

//jQuery.param returns something like ?param=1&param2=2 and so on
//params = a plain javascript object that contains the parameters to be sent
this.http.fetch(url, {
  body: $.param(params),
  method: 'post',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
.then(response => response.json())
.then(response => { 
   //your magic here
});

我知道这不是一个好的解决方案,但这是迄今为止我发现的最简单的方法。

您可以使用如下FormData:

function sendForm() {
  var formData = new FormData();
  formData.append('email', 'test@test.com');
  formData.append('password', '123456');

  http.post(url, formData);
}

这种技术不再有效,因为Aurelia fetch将不允许指定body+方法:“GET”+headers我不希望将参数放在URL中,但这确实有效。因此,您可以删除主体,只需指定
fetch(url+params,{…})