繁体   English   中英

如何在不编码字符串的情况下将字符串作为查询参数传递给 Ajax GET 请求?

[英]How do I pass a string to an Ajax GET request as a query param without the string getting encoded?

我正在尝试在 Ajax 获取请求中将主题 ID 列表作为查询参数传递,以便它只返回与我传入的主题 ID 有关的数据。API 设置为接收作为单个数字的subjectId参数,或以逗号分隔的数字字符串。 我已经确定我发送的内容正是—— "13,14,15" ——但是当我提出请求时,get URL 对字符串进行编码,使其看起来像这样: 13%2C14%2C15%2C .

The URL I want to generate is (I'm just using placeholders for the domain name and session token) https://get-url.com/get-filter-counts?sessionToken=abcdefg&subjectId=13,14,15 . 当我在浏览器中测试它时,它可以工作。

实际生成的 URL 是https://get-url.com/get-filter-counts?sessionToken=abcdefg&subjectId=13%2C14%2C15%2C

我试过研究这个问题,但我什至不确定那里发生了什么。 我已经查看了大量在 Ajax 请求中将字符串作为查询参数传递的示例,据我所知,我做得正确。 我将一个字符串硬编码到下面的参数中只是为了演示:

 $.ajax({
      type: "GET",
      url: getURL,
      dataType: "JSON",
      data: {
        sessionToken: sessionToken,
        subjectId: "13,14,15"
      },

      //process the returned result of the Ajax call
      success: (ajaxResult) => {
        console.log("subject id list:", subjectId);
        console.log("Ajax result:", ajaxResult);
      },

在成功方法中,控制台返回正确的 subjectId 列表以及与这些主题 ID 相关的数据。 但是由于这个 URL 问题,我无法在浏览器中获得结果。

如何从 url 中的字符串中删除编码(如果发生这种情况?)? 谢谢。

问题在于在数字之间使用逗号。 您从前端发送的字符串正在被编码,因此您会看到 URL。 如果您尝试encodeURIComponent(13,14,15)您将看到相同的响应。 该解决方案将使用逗号以外的其他内容并在后端处理它或简单地发送一个数组。

好吧,我在最后发送了带有逗号结尾的数字字符串(我认为这不会是一个问题),事实证明这就是服务器没有正确处理编码的 URL 的原因。 只是分享以防万一这对查看此问题的其他人有用。

@Quentin 的评论基本上是正确的,除了这个问题实际上是前端错字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM