Я пытаюсь отправить данные POST, которые составляют 2 миллиона символов (не двоичная строка) с помощью ajax (jQuery), и он всегда выглядит пустым на стороне PHP. Вот мой код:
var string = "<data string that is 2M chars long>"; $.ajax({ cache: false, type: 'POST', url: 'data.php', data: {'data_string': string} });
На стороне PHP я получаю следующее сообщение об ошибке (при попытке получить данные из $_POST['data_string']
):
Notice: Undefined index: data_string in data.php on line ...
Я проверил post_max_size
в php.ini, и он установлен на 256M, которого должно быть более чем достаточно? Я в тупике и не уверен, что я делаю неправильно …
EDIT: если я делаю "string"
небольшим количеством данных (например, var string = 'test'
), то $_POST["data_string"]
возвращает test
, как и ожидалось. Поэтому мне интересно, есть ли какой-то предел данных, который я достигаю в Apache2, PHP или в самом браузере? Я использую Google Chrome 17.0.963.79
EDIT2: memory_limit = 256M
в php.ini
EDIT3: max_input_time = -1
в php.ini
EDIT4: var_dump ($ _ POST) возвращает массив (0)
EDIT5: работает последняя стабильная версия PHP5 на debian squeeze: PHP 5.3.3-7 + squeeze8 с Suhosin-Patch (cli) (построено: 10 февраля 2012 14:12:26)
Вам нужно будет проверить параметры пределов на всех элементах между вами и сервером. Достаточно сложно для прокси-серверов, если они есть, но, по крайней мере, вы можете проверить:
Apache:
PHP:
Если вы достигли скомпилированного лимита для Apache, ваше единственное решение – избежать прямого POSt такого большого количества данных, вам придется разбить его на куски.
Вы также можете проверить настройки suhosin.ini, например:
suhosin.post.max_value_length = 65000
Вы также можете установить set_time_limit (0) и лимит памяти .
EDIT: вам также может понадобиться console.log(string)
; или console.log(string.length);
перед тем, как ваш запрос будет проверен, что он установлен правильно, а также проверьте свой запрос в инструментах разработчика firebug или chromes, чтобы проверить отправку ваших данных.
Просто разделите одиночные кавычки из имени параметра!
Из:
data: {'data_string': string}
Для того, чтобы:
data: {data_string: string}
//Adding Respond Box After Selected Field $( '[maxlength]' ).bind('click keyup', function(){ var RespondBox = '<div class="StPgRp" id="UpdateRespond"></div>'; $('#UpdateRespond').remove(); $(this).after(RespondBox); }); //Counting Maximum Characters Allowed In Selected Field $( '[maxlength]' ).bind('click keyup', function(){ var MaxLength = $(this).attr('maxlength'); var CurrentLength = $(this).val().length; var Remainder = MaxLength - CurrentLength; $('#UpdateRespond').html('You have ' + Remainder + ' characters remaining.'); }); //Checking the PHP Function if YES then send message to user $( '.Check' ).bind('click keyup', function(){ var Check = $(this).parent().children('.Check').val(); });
Добавьте это в ваш .js-файл, связанный с вашей страницей и отсортированный!