Jquery Ajax - post huge string value

12 浏览
0 Comments

Jquery Ajax - post huge string value

我需要POST一个大约3MB大小的巨大字符串,有可能不使用URL参数将其发送到PHP吗?

如果我将其作为URL参数发送,请求将达到URL的大小限制。

如何解决这个问题?有什么线索吗?

非常感谢。

实际上,我是这样做的:

$.ajax({
 type:'POST',
.......
data:{string:3MB_string}
});

我正在使用PHP和jQuery,并且希望将这个3MB的base64字符串发送到一个简单的URL,比如site.com/script.php

这个字符串是一个文件阅读器API的base64图像

这是一个字符串的例子,但这不会达到大小限制,因为在粘贴3MB的内容时会出现问题,http://jsfiddle.net/QSyMc/

0
0 Comments

Jquery Ajax - post huge string value这个问题的出现原因是由于默认情况下,通过data选项传递给服务器的数据会被处理和转换为查询字符串的形式,适应默认的content-type为"application/x-www-form-urlencoded"。而当需要发送一个DOMDocument或其他非处理过的数据时,需要将processData选项设置为false。

解决方法是在发送POST请求时,将processData选项设置为false,并将要发送的数据转换为字符串形式的JSON。具体的代码如下:

var data = { "some" : "data" };
$.ajax({
    type: "POST",
    url: "/script",
    processData: false,
    contentType: 'application/json',
    data: JSON.stringify(data),
    success: function(r) {
       console.log(r);
    }
});

通过将processData选项设置为false,可以阻止jQuery将数据处理为查询字符串形式,而是以原始的形式发送给服务器。同时,设置contentType为'application/json'以确保服务器正确解析接收到的数据。

在这个问题中,某些情况下了使用半JSON半对象的方式来解决问题,但并没有给出具体的解释或原因。

0
0 Comments

问题出现的原因是通过POST方法传递给服务器的变量数量超过了php.ini文件中的max_input_vars字段的限制。解决方法是优化查询,使其变得更加高效并且在限制范围内。也可以通过修改php.ini文件中的设置来提高限制,但是在这种情况下,通过禁用非必要的查询参数来获得更好的代码效果。

0
0 Comments

Jquery Ajax - post huge string value的问题出现的原因是发送的数据量太大,超过了服务器允许的请求大小限制。解决方法是使用POST请求,并在服务器端的脚本中获取该值。另外,还需要增加允许的请求大小限制。

首先,我们使用以下代码发送POST请求:

$.ajax({
    url: '/script.php',
    type: 'POST',
    data: { value: 'some huge string here' },
    success: function(result) {
        alert('the request was successfully sent to the server');
    }
});

然后,在服务器端的脚本中获取该值:

$_POST["value"]

此外,可能还需要增加允许的请求大小限制。可以在`.htaccess`文件或`php.ini`文件中设置`post_max_size`值,例如:

#设置最大请求大小
php_value post_max_size 20M

如果出现了“you reached request limit”的错误提示,可能需要增加允许的请求大小限制。请提供更多信息,例如发送请求的URL和使用的服务器端语言。

可以通过更新答案来演示如何增加最大允许的请求大小限制。

关于这个问题的答案链接:[php.net/manual/en/ini.core.php#ini.post-max-size](http://www.php.net/manual/en/ini.core.php#ini.post-max-size)

回答者解释了为什么数据不作为URL参数发送。URL是在`open()`方法中发送的,而不是在`send()`方法中发送。当在jQuery中指定`type: 'POST'`时,意味着要将数据作为载荷发送,而不是作为URL参数发送。

如果返回的字符串太大,超过了3MB,可能会导致复制和粘贴操作出现问题。可以通过访问此链接查看从PHP返回的字符串的示例:[jsfiddle.net/QSyMc](http://jsfiddle.net/QSyMc/)。

0