【问题标题】:Nativescript JS send URLSearchParams into POST requestNativescript JS 将 URLSearchParams 发送到 POST 请求中
【发布时间】:2019-02-05 09:47:38
【问题描述】:

我想不使用 JSON 而是使用 x-www-form-urlencoded (URLSearchParams) 将数据发送到 API。

我尝试使用此代码,但 API 未正确接收数据。

return fetchModule.fetch(config.apiUrl + "auth/register",
        {
            body: JSON.stringify({
                "username": viewModel.get("username"),
                "firstname": viewModel.get("firstname"),
                "lastname": viewModel.get("lastname"),
                "email": viewModel.get("email"),
                "password": viewModel.get("password")
            }),
            method: "POST",
            headers:{
                "content-type" : "application/x-www-form-urlencoded"
            }
        }).then(handleErrors);

【问题讨论】:

    标签: javascript api post request nativescript


    【解决方案1】:

    只需将JSON.stringify 更改为URLSearchParams 并删除 content-type 标头,当 fetch 检测到 URLSearchParams 作为正文时,它将自动添加正确的 content-type

    return fetchModule.fetch(config.apiUrl + "auth/register", {
      body: new URLSearchParams({
        "username": viewModel.get("username"),
        "firstname": viewModel.get("firstname"),
        "lastname": viewModel.get("lastname"),
        "email": viewModel.get("email"),
        "password": viewModel.get("password")
      }),
      method: "POST"
    }).then(handleErrors);
    

    【讨论】:

    • 我试过了,但我有一个错误“URLSearchParams is not defined”
    • 嗯,你用的是IE吗?
    • 移动应用没有带有 JS 的原生脚本
    【解决方案2】:

    我认为 {N} 运行时无法访问 URLSearchParams 类,它是特定于浏览器的。

    您可以通过对象中的键通过简单的循环来实现相同的目的,

    var data = {
     "username": viewModel.get("username"),
     "firstname": viewModel.get("firstname"),
     "lastname": viewModel.get("lastname"),
     "email": viewModel.get("email"),
     "password": viewModel.get("password")
    };
    var endocedStr = "";
    for (var prop in data) {
      if(endocedStr) {
        endocedStr += "&";
      } 
      endocedStr += prop + "=" + data[prop];
    }
    return fetchModule.fetch(config.apiUrl + "auth/register", {
      body: endocedStr
      method: "POST"
    }).then(handleErrors);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2013-07-07
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多