Jquery Ajax - 发布巨大的字符串值

bom*_*tic 17 javascript ajax jquery post

我需要POST一个大约3mb的巨大字符串,是否可以使用not url params将其发送到php?

如果我用url params发送它,请求达到url的大小限制.

如何解决这个问题?任何线索?

非常感谢.

其实我是这样做的:

$.ajax({
 type:'POST',
.......
data:{string:3MB_string}
});
Run Code Online (Sandbox Code Playgroud)

我正在使用PHP和jQuery,我想在一个简单的URL上发送3mb base64字符串给php,就像 site.com/script.php

该字符串是File Reader API base64图像

这是一个字符串的例子,但这不会达到大小限制它不是3mb更少引起麻烦的粘贴,以显示你3mb,http://jsfiddle.net/QSyMc/

Dar*_*rov 28

您需要使用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');
    }
});
Run Code Online (Sandbox Code Playgroud)

并在您的服务器端脚本中检索值:

$_POST["value"]
Run Code Online (Sandbox Code Playgroud)

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

#set max post size
php_value post_max_size 20M
Run Code Online (Sandbox Code Playgroud)

  • 我已经用这种方式发送了这个:P @Darin Dimitrov,这导致了url大小限制 (4认同)
  • 您可能还需要增加允许的最大请求大小.我更新了我的答案来说明这一点. (4认同)

kra*_*dio 10

尝试使用processDatafalse和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);
    }
});
Run Code Online (Sandbox Code Playgroud)

jQuery.ajax文档:

processData(默认值:true)

类型:布尔值

默认情况下,作为对象传入数据选项的数据(技术上,不是字符串)将被处理并转换为查询字符串,适合默认内容类型"application/x-www-form-urlencoded" .如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false.