Intereting Posts
как остановить повторное ввод данных в базу данных при обновлении страницы Получайте платежную информацию в разделе обзора заказа одной страницы в Magento Как сохранить JQuery UI упорядоченные позиции таблицы в базе данных MySQL? Проблема с синтаксисом PHP SimpleXML PHP: Предотвращение захвата сеанса с помощью токена, хранящегося в файле cookie? Действие формы CodeIgniter не работает должным образом PHP: Как преобразовать изображение из URL в Base64? Выполнение php-фантомных js работает, но casperjs не разрешает работу разрешено Ошибка Firefox «элемент не найден» PHP 5.5.16 Невозможно включить OpenSSL Как я могу проверить с регулярным выражением, что строка содержит только определенные допустимые символы? RAW POST с использованием cURL в PHP проблемы в Parse.com php hosting Невозможно получить доступ к объявленной глобальной переменной в WordPress Обнаружение определенных слов в представлении textarea

PHP Jquery Ajax вызывается сетью :: ERR_EMPTY_RESPONSE

У меня есть следующий код JavaScript на странице. Когда выполняется вызов ajax, я вижу, что в разделе обозревателя обозревателя / отладчика возникает ошибка net :: ERR_EMPTY_RESPONSE . Он отлично работает в среде localhost, но бросает выше ошибки в производстве.

В клиентском коде,

<script> $(document).ready(function(){ $("#identityLinks a").on("click", function(){ value = $(this).attr("id"); if(value != "") { $.ajax({ url: "publish/updateUsersData.php", type: "POST", data: {receiverId: value}, contentType: "application/x-www-form-urlencoded; charset=UTF-8", dataType: "json", success: function(data) { //alert(data["result"]); console.log(data["result"]); }, error: function(xhr, textStatus, errorThrown) { //alert(xhr +" "+ textStatus +" "+errorThrown); console.log(xhr +" "+ textStatus); } }); } }); </script> 

В Server-side code (PHP) у меня есть следующий код в updateUsersData.php :

 <?php header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 01 Jan 1996 00:00:00 GMT'); header('Content-type: application/json; charset=UTF-8'); if(isset($_POST["receiverId"])) { $receiver_id = trim($_POST["receiverId"]); $arr = array("result"=>$receiver_id); echo json_encode($arr); die(); break; } else { $arr = array("result"=>"No user data received. Error!"); echo json_encode($arr); die(); break; } ?> 

Считаете ли вы, что это связано с заголовком с ответами Expire или ошибкой в ​​версии JQuery 1.9.1? Я не нашел таких ошибок, когда мы были предыдущими версиями. Кроме того, этот код не обновлялся в течение 5 месяцев, а ошибки браузера ползут только некоторое время назад. Спасибо за вашу помощь и поддержку.

Редактировать:

Статус : этот ВОПРОС пока не разрешен. Необходима помощь экспертов JQuery AJAX . Пожалуйста, продвигайте этот вопрос. Кроме того, CORS не несет ответственности за эту проблему.

При нажатии на консоль, в которой произошла ошибка выше, я был непосредственно взят в эту строку в

 JQuery 1.9.1 where console error lines point to: => xhr.send( ( s.hasContent && s.data ) || null ); Also these ones are shown in console error mark: => transport.send( requestHeaders, done ); => ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) .apply( matched.elem, args ); => return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; 

Является последней версией jquery, ответственной за ошибку PROVISIONAL HEADERS A SHOWN.

Я считаю, что ваш запрос не классифицируется как «простой запрос» по спецификации CORS:

http://www.w3.org/TR/cors/#simple-cross-origin-request-0

поскольку вы настраиваете заголовок ответа для Content-Type: application / json.

Таким образом, вашему серверу необходимо будет обработать запрос перед полетом, который включает в себя установку некоторых дополнительных заголовков как для запроса, так и для ответа на запрос CORS для успеха

Вот хорошая статья о том, что вам нужно сделать – проверить бит под «не так просто»:

http://www.html5rocks.com/en/tutorials/cors/

У меня такая же проблема на моей странице. Я думаю, что это происходит из-за количества переменных или насколько они велики. У меня есть страница, которая отправляет json из около 250 переменных без каких-либо проблем, но эта ошибка возникает на этой странице, тогда как должно быть отправлено около 1500 переменных. Эта проблема новая. Раньше каждая вещь даже с 3000 переменными была без проблем. Эта проблема возникает для меня как в хроме, так и в firefox в последних версиях. Это не ошибка на стороне сервера, потому что я настроил apache для восстановления 1 миллиона переменных из 30 Мб данных.

У меня была такая же ошибка, и я смог ее исправить, отправив все данные, которые мне нужно обработать в массиве, на сервер, а затем снова вернул обновленный массив клиенту, так что будет сделан только один вызов AJAX.

Я не смог определить точную причину этой проблемы, но я уверен, что происходит, что какой-то буфер заполняется до всех вызовов AJAX, заставляя сервер закрывать некоторые из этих запросов ,

Надеюсь это поможет.

Так что это может произойти по ряду причин, независимо от используемого языка или технологии. Я столкнулся с этим с чрезвычайно малыми полезными нагрузками, которые отправляются туда и обратно с 15-20 точками данных с использованием углового ресурса. PHP, JQuery, Angular все обрабатывают ошибку по-разному, но результаты сводятся к одной из трех вещей.

  1. Задержки или проблемы с сетью, я это делал на чрезвычайно медленных подключениях, опять-таки это может быть что угодно плохому маршрутизатору или неправильной конфигурации брандмауэра, чтобы просто на дрянной сети, в такие программы, как avast, которые устанавливали прокси-сервер, чтобы защитить вас от вирусов ,

  2. Высокая загрузка на сервере, я заставил сервер быть на 100% процессор от стресс-тестирования, и это будет происходить на случайных вызовах, потому что сервер недостаточно быстро передает запросы. Это трудно исправить и действительно является проблемой масштабирования для системы.

  3. Огромные наборы данных, при отправке больших сообщений, которые откликаются, обычно это можно устранить, настроив настройки таймаута на любом веб-сервере, который вы используете.

Я нашел такую ​​же проблему из-за моей сетевой проблемы, может быть, ваша сеть также вызывает это.

Я также получал ту же ошибку при использовании XMLHttpRequest ().

Однако я смог разрешить ошибку, отключив ограничение памяти для скрипта на стороне сервера.

Это делается путем установки memory_limit в -1 в файле php.ini. По умолчанию установлено значение 128M, поэтому вы также можете увеличить размер памяти, а не полностью отключить ее, так как это может занять много ресурсов сервера.

Я смог решить это в большинстве случаев с помощью простой функции, которую я написал для сброса / сброса всей памяти мусора и сброса / сброса выходной памяти после любых / всех циклов.

 function memes(){ ob_flush(); ob_end_flush(); gc_collect_cycles(); ob_start(); gc_enable(); }