JQuery Ajax - запись огромного строкового значения
Мне нужно POST огромную строку размером около 3mb, можно ли отправить ее на php, используя не параметры url?
Если я отправлю его в url params, запрос достигнет ограничения размера в URL-адресе.
Как можно обойти это? любой ключ?
Большое спасибо.
На самом деле я делаю это так:
$.ajax({
type:'POST',
.......
data:{string:3MB_string}
});
Я использую PHP и jQuery, и я хотел бы отправить строку base64 3mb в php на простой URL-адрес, например site.com/script.php
Строка - это изображение с базовым 64-битным файлом чтения файлов
это пример строки, но это не достигнет ограничения по размеру, это не 3 МБ, не вызывает беспокойства при вставке, чтобы показать вам 3mb, http://jsfiddle.net/QSyMc/
Ответы
Ответ 1
Вам понадобится запрос 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');
}
});
а на стороне сервера script выберите значение:
$_POST["value"]
Также вам может потребоваться увеличить разрешенный размер запроса. Например, в вашем файле .htaccess
или в php.ini
вы можете установить значение post_max_size
:
#set max post size
php_value post_max_size 20M
Ответ 2
Попробуйте с 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:
processDatastrong > (по умолчанию: true)
Тип: Boolean
По умолчанию данные, переданные в к параметру данных как объекта (технически, ничего, кроме строка) будет обрабатываться и преобразовываться в строку запроса, при установке к стандартным типом контента "application/x-www-form-urlencoded". Если вы хотите отправить DOMDocument или другие не обработанные данные, установите это параметр false.
Ответ 3
Я столкнулся с подобной проблемой. Это не длина строки запроса, а число переменных, которые я передавал на сервер. Php.ini устанавливает ограничение в поле max_input_vars на 1200 переменных. В моем случае я превышал эту сумму, а не сумму post_max_size. Пришлось вернуться и сделать запрос более эффективным и ограниченным. Думаю, я мог бы установить настройку php.ini, но я получил лучший код, отключив необязательные параметры запроса.
Ответ 4
Вам определенно нужно использовать метод 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
Какой из них использовать, зависит от того, к чему у вас есть доступ.
Ответ 5
Попробуйте следующее:
var str = "YOUR STRING";
$.ajax({
url: 'YOUR URL',
type: 'POST',
data: { mystring: str },
success: function(result) {
console.log(result);
}
});