Очень длинный ответ json останавливается и отправляет заголовки HTTP, как текст затем продолжается

Я полностью потерян с этой проблемой.

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

Проблема в том, что ответ заканчивается в виде:

...est":"test length"}]]}
HTTP/1.1 200 OK
Date: Wed, 21 Sep 2011 17:10:32 GMT
Server: Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0
X-Powered-By: PHP/5.3.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=90
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

5b03d
{"ResultsInfo":{"RequestID":"131661886010","FeedCompletion":{"0":"100"}},"ResultsData":[[{"test":"test length"},{"test":"test length"},

...0

... представляют больше одного и того же «{» test «:» test length «}», строка

Таким образом, ответ, по-видимому, имеет вид:

  • Последняя часть заголовка http-ответа данных
  • распечатана в теле
  • Символы '5b03d'
  • Первая часть данных
  • Символ '0'

НЕТ

Я использую структуру Yii PHP , но искал далеко и широко и ничего не видел на форумах.

Мне кажется, что веб-сервер разделяет ответ на несколько частей или тайм-аут и начинается снова.

Или возможно есть макс. размер возвращения?

EDIT_____________________________________

I попробовали application/json тип контента, как предложено, но это все еще происходит. Текстовая часть заголовка, возвращаемая в теле, выглядит следующим образом (при использовании кодировки applciaiton/json):

HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 08:48:28 GMT
Server: Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0
X-Powered-By: PHP/5.3.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=89
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json

Как отключить кодировку с фрагментами для этого сценария?

* * EDIT 2_________________________________

I теперь добавили длину содержимого в заголовки, и заголовок ответа, который я получаю, все еще распечатывается в теле как:

HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 11:55:39 GMT
Server: Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0
X-Powered-By: PHP/5.3.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 372797
Keep-Alive: timeout=5, max=90
Connection: Keep-Alive
Content-Type: application/json

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

* * Единственное отличие заключается в том, что в ответе отсутствуют символы «5b03d» или «0».

EDIT_3___________________________

As попросил, вот резюме моего php кода

$dataArray = array(
    'ResultsData'=>array(
          array('test'=>'test length'),
          array('test'=>'test length'),
          array('test'=>'test length'),
          ...
));

$return = json_encode($dataArray);

header('Content-Length: '.strlen($return)); 
header('Content-type: application/json');

echo $return;
6
задан Julian S 22 September 2011 в 14:07
поделиться