Jquery Ajax – 发布巨大的字符串值
我需要POST一个大约3mb的巨大字符串,是否可以使用not url params将其发送到php?
如果我在url params发送它,请求达到url的大小限制。
如何解决这个问题? 任何线索?
非常感谢。
其实我是这样做的:
$.ajax({ type:'POST', ....... data:{string:3MB_string} });
我正在使用PHP和jQuery,我想在一个简单的URL上发送3mb base64字符串给php,比如site.com/script.php
该字符串是File Reader API base64图像
这是一个字符串的例子,但这不会达到大小限制它不是3mb更少导致麻烦粘贴,以显示你3mb, http://jsfiddle.net/QSyMc/
您需要使用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
尝试将processData
为false,并使用JSON的字符串表示forms
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)
类型:布尔值
默认情况下,作为对象传入数据选项的数据(技术上,不是字符串) 将被处理并转换为查询字符串 ,适合默认内容类型“application / x-www-form-urlencoded” 。 如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。
我遇到了类似的问题。 它不是查询字符串的长度,而是我传递给服务器的变量数。 php.ini将max_input_vars字段的限制设置为1200个变量。 在我的情况下,我超过了那个数量而不是post_max_size数量。 不得不返回并使查询更有效率和限制。 我想我可以提高php.ini设置但是我通过禁用非必要的查询参数来获得更好的代码。
你肯定需要使用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
使用哪一个取决于您有权访问的内容。
试试这个:
var str = "YOUR STRING"; $.ajax({ url: 'YOUR URL', type: 'POST', data: { mystring: str }, success: function(result) { console.log(result); } });