JQuery Ajax - запись огромного строкового значения - программирование
Подтвердить что ты не робот

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/

4b9b3361

Ответ 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:

processData​​strong > (по умолчанию: 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);
    }
});