【问题标题】:How can I send a really big string using ajax?如何使用 ajax 发送一个非常大的字符串?
【发布时间】:2019-11-26 06:47:30
【问题描述】:

我正在尝试使用 ajax 发送一个相当大的字符串(大约 300 万个半字符)。 该代码适用于小字符串,但如果我尝试使用我需要传递的字符串,它将无法正常工作。 我使用的字符串是一个编码的 base64 Excel 文件。

这是我用来发送字符串的代码:

$.ajax({
      url: "", //The page I call
      type: "GET",
      data: { base64: "....."},//here goes the string I need to pass
      dataType: 'text',
      success: function (response) {
      alert("successful");
      },
      error: function () {
          alert("error");
      }
});

此代码适用于较小的字符串,但不适用于我的。 同样,我要传递的字符串大约是 300 万个半字符,甚至可能更大。

后端代码如下:

[HttpGet("Test")]
        public async Task<string> testHelloWorld(string saluto)
        {

            try
            {
                string testString = "Funziona";
                Console.Write(testString + ": " + saluto + "\n");
                return testString;
            }
            catch (Exception ex)
            {
                Log.Error("API(Test) - Exception", ex);
                return null;
            }
        }

有没有办法发送这个字符串??

【问题讨论】:

  • “这行不通。”你得到什么错误?控制台上有什么吗?等
  • 这个c#相关吗?你能告诉我们后端吗?
  • 尝试使用POST
  • @phuzi 当我在 VS 中输入字符串时,即使没有转义字符或“,它甚至都不会将其读取为字符串
  • @TommasoBertoni 我会在一秒钟内更新我的问题,包括后端

标签: c# ajax string


【解决方案1】:

将您的 ajax 更改为 POST 并更改 web.config 文件中的 jsonSerialization 最大长度。

默认值为 2097152 个字符。将其更改为 2147483644 (int max lenght) 并再次检查。

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="2147483644"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

使用 GET,最大 url 长度为 2083 个字符。

【讨论】:

  • OP正在发送GET请求,不要认为这个问题与JSON有任何关系
  • 感谢您的帮助,但与此无关:)
【解决方案2】:

对于 GET 请求,HTTP 本身没有任何硬编码限制,但浏览器有 2kb - 8kb 的限制。该限制取决于服务器(Apache、IIS、NGINX...)和客户端(浏览器)端。

对大字符串使用 POST 请求。如果仍然导致问题,请尝试压缩数据。

【讨论】:

    【解决方案3】:

    使用POST 而不是GET,因为在网络服务器上配置的查询字符串的长度通常是有限制的。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多