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

时间:2013-07-23 12:21:02

标签: javascript jquery ajax post

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

如果我使用url params发送请求,请求达到url中的大小限制。

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

非常感谢。

其实我是这样做的:

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

我正在使用PHP和jQuery,我想在一个简单的网址上将3mb base64字符串发送到php,例如site.com/script.php

该字符串是File Reader API base64图像

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

5 个答案:

答案 0 :(得分: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');
    }
});

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

$_POST["value"]

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

#set max post size
php_value post_max_size 20M

答案 1 :(得分:7)

尝试使用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);
    }
});

来自jQuery.ajax文档:

  

processData (默认值:true)

     

类型:布尔值

     

默认情况下,传入的数据   作为对象的数据选项(从技术上讲,除了一个以外的任何东西)   string)将被处理并转换为查询字符串,拟合   到默认内容类型“application / x-www-form-urlencoded”。如果   要发送DOMDocument或其他未处理的数据,请设置此项   选项为false。

答案 2 :(得分:3)

我遇到了类似的问题。它不是查询字符串的长度,而是我传递给服务器的变量数。 php.ini将max_input_vars字段的限制设置为1200个变量。在我的情况下,我超过了那个数量而不是post_max_size数量。不得不返回并使查询更有效率和限制。我想我可以提高php.ini设置,但是我通过禁用非必要的查询参数来获得更好的代码。

答案 3 :(得分:2)

你肯定需要使用POST方法。如果字符串仍然很大,请检查php.ini文件以找出最大POST参数大小。

要更改此值,请执行以下任一操作:

<强> 1。更改php.ini中的值

post_max_size=20M
upload_max_filesize=20M

<强> 2。或将此代码添加到.htaccess文件

php_value post_max_size 20M
php_value upload_max_filesize 20M

使用哪一个取决于您有权访问的内容。

答案 4 :(得分:-1)

试试这个:

var str = "YOUR STRING";
$.ajax({
    url: 'YOUR URL',
    type: 'POST',
    data: { mystring: str },
    success: function(result) {
        console.log(result);
    }
});