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.

php,jquery,ajax,google-chrome,

27

Ответов: 7


4

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

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

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

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

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

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


3

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


2

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

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

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


2

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

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

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

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


0

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

PHP, JQuery, AJAX, Google-хром,
Похожие вопросы