使用 URLSearchParams() 时如何处理字符串数组中的逗号

How do I handle commas in array of strings when using URLSearchParams()

提问人:gib65 提问时间:2/14/2023 更新时间:2/14/2023 访问量:55

问:

我正在使用以下代码向我的后端应用程序发送 AJAX 请求:

function add() {
    ajax('add', 'POST', {
      content: ['abc', 'xyz,123']
    });
}

function ajax(endpoint, method, payload, callback) {
  const xhttp = new XMLHttpRequest();
  const url = 'http://localhost:3000/' + endpoint;

  xhttp.onreadystatechange = function() {
    console.log('readyState: ', this.readyState);
    if (this.readyState === 4) {
      if (this.status === 200) {
          console.log('success!');
          if (callback) {
            callback();
          }
      } else {
          console.log('error: ', JSON.stringify(this));
      }
    }  
  };
  xhttp.open(method, url, true);
  xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  if (payload) {
    xhttp.send(new URLSearchParams(payload));
  } else {
    xhttp.send();
  }
}

正如你所看到的,我正在将一个字符串数组传递给函数。该函数在将数组与请求一起发送之前使用数组进行格式化。这将生成一个 url 格式的参数字符串,如下所示:ajaxURLSearchParams()

content=abc,xyz,123

但你会注意到,原始数组只由两个字符串组成,其中一个是 .但是,由于逗号的原因,url 格式的字符串最终看起来像 3 个字符串:."xyz,123""abc", "xyz", "123"

后端需要一种方法来区分确实有 n 个原始字符串的情况和有 < n 个原始字符串的情况,其中一个或多个包含逗号。除了使用 之外,还有没有其他方法可以格式化字符串数组,或者在调用之前我可以对字符串中的逗号做些什么?或者有其他方法可以实现我的目标?URLSearchParams()URLSearchParams()

谢谢。

数组 ajax string urlsearchparams

评论

0赞 sideshowbarker 2/15/2023
预期结果是什么?如果不是,结果应该是什么样子?也就是说,后端期望它是什么样子的?content=abc,xyz,123

答: 暂无答案