【问题标题】:Received string with '+' when Ajax post with append string to FormData using c#当 Ajax 使用 c# 将字符串附加到 FormData 时收到带有“+”的字符串
【发布时间】:2017-10-06 18:07:49
【问题描述】:

实际上,我已经创建了一个页面,其中包含将文本和图像保存到数据库的过程。所以我使用了表单数据。一切都很好,但是当我们给出带空格的文本时,空格变为“+”符号。请在下面找到我如何尝试的代码,

脚本:

var fileData = new FormData();
var notes = "testing testing testing testing testing testing testing te";
fileData.append('notes', notes);
 $.ajax({
                url: "api/update",
                type: "POST",
                data: fileData,
                },
                success: function (response) {
                    alert("saved");
                }
});

调试脚本时我可以得到相同的字符串。但是在我们从脚本发布到 Action 之后,我只能得到字符串为“testing+testing+testing+testing+testing+testing+testing+test”。

C#:

[HttpPost]
[Route("api/update")]
public async Task<dynamic> PostAsyncOccupantImage()
{
      string error = string.Empty;
      MyStreamProvider streamProvider = new MyStreamProvider();
      await Request.Content.ReadAsMultipartAsync(streamProvider);
      var notes = streamProvider.FormData.ToString().Split('&')[0]
      return error;
}

请提出您的建议。 谢谢, 阿伦D

【问题讨论】:

  • 我们不知道 MyStreamProvider 到底是什么,也不知道它从哪里获取数据,也不知道它对这些数据做了什么。
  • 不,我可以在方法中将“+”替换为“”,而不是您给定的链接。我需要知道它为什么会发生以及它如何解决@Mark

标签: c# jquery .net ajax form-data


【解决方案1】:

Mark给出的链接的答案中解释了:

在一些 GET 和 POST 请求中(很可能在 URL 中,或通过表单),空格在传递到服务器之前被编码为“+”(加号)符号。

这是因为 URL 不能包含空格。

注意:这只适用于 application/x-www-form-urlencoded 内容。空格字符以其他方式编码为:%20

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2012-11-09
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多