【问题标题】:jQuery .each() loop through array changes query stringjQuery .each() 循环遍历数组更改查询字符串
【发布时间】:2018-02-19 22:33:07
【问题描述】:

我在我的代码中发现了一个奇怪的错误,但我找不到哪里出错了。我正在使用这个函数在 jQuery 中循环一个数组:

$.each(response, function(index, value) {
  console.log(value)
  $.get('/part_report_snippet', {
    part_request: value, 
    projekt_nummer: $('#project_id').val() 
  }, function(response){
    var $content = $(response);
    $grid.append($content).isotope('appended', $content);
  });

数组如下所示:

value = ["CA-S_INT-CM%MITTELKONSOLE", "CA-S_EXT-DM%HECK", "CA-S_INT-CM%BAUTEIL-S", "CA-S_INT-DM%BAUTEIL-M", "CA-S_INT-DM%BAUTEIL-S", "CA-S_INT-DM%EINZELSITZ", "CA-S_INT-DM%HINTERWAGEN", "CA-S_INT-DM%INTERFACEELEMENTE", "CA-S_INT-DM%ITAFEL", "CA-S_INT-DS%TÜR-HINTEN", "CA-S_INT-DS%TÜR-VORNE", "CA-S_ORG%MEETING", "CA-S_ORG%ORGANISATION", "CA-S_ORG%REVIEW"]

和错误:

jquery.js:9175 GET http://uewin007:5000/part_report_snippet?part_request=CA-S_INT-CM%25MITTELKONSOLE&projekt_nummer=22135 500(内部服务器错误)

重要的是:CA-S_INT-CM%**25**MITTELKONSOLE。 25从哪里来?我完全不知道。

感谢您的帮助

【问题讨论】:

  • 500 错误意味着您的服务器代码出现问题。您需要调试它,而不是 JS。
  • %25 是您输入中“%”字符的 url 编码。

标签: jquery ajax query-string each


【解决方案1】:

重要的是:CA-S_INT-CM%25MITTELKONSOLE 25 来自哪里?

这很正常。 %25 是 URI-encoding 中 % 字符的正确编码; GET 参数中的字符必须进行编码,因为它们是请求 URI 的一部分。 % 在 URI 编码中是特殊的,因为它引入了一个编码字符(%25 代表 %%20 代表空格等)您的服务器将在 URI 解码时将 %25 转换回 %它。

【讨论】:

  • @RoryMcCrossan:不——呃,好吧,可能不是。 :-) 我在回答“25 来自哪里?”的问题
  • 哦,哇,我从来没有猜到过。有没有什么方法可以在没有 25 的情况下发送它?
  • @mamolx:您是在询问是否可以错误地发送它。可能,但我从来没有理由要故意发送不正确的 URL。同样:在 GET 参数中发送 % 字符的正确方法是 %25
  • 最让我惊讶的是它适用于数组中的所有 13 个项目,但不适用于 'CA-S_INT-CM%MITTELKONSOLE',它们都有 '%'
  • @mamolx:正如 Rory 在对该问题的评论中所说,这几乎可以肯定是服务器代码中的问题,而不是客户端代码。我会更进一步:几乎可以肯定它不是%25。你专注于那个,但这不太可能是问题。更有可能发生了一些其他问题。但我要检查的第一件事是服务器代码是否正确地对字符串进行 URI 解码。在大多数堆栈中,这将是自动的,但我仍然会检查...
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2019-08-03
  • 2010-11-12
  • 2022-01-16
  • 2019-09-07
相关资源
最近更新 更多