Pagina 1 van 1

JSON respons wordt als platte tekst weergegeven

Geplaatst: 15 mar 2015, 18:59
door ArnoBuizer
  • Adres van je forum: https://aabuizer.nl/forum_cdh
    Event. modificaties op je forum:de extensie adduser
    Wanneer ontstond het probleem?direct na upgrade 3.0.13PL1 naar 3.1.3
    phpBB versie:3.1.3


    Heb je onlangs iets veranderd aan je forum?de upgrade
    Wat is het probleem?


Na diverse acties (begon al bij eerste bezoek, de install directory was nog ongewijzigd aanwezig) verschijnt en JSON code als platte tekst op het scherm. (ik meen bij een enkele poging in het begin dat mijn browser (IE11) zelfs vroeg of ik het bestand index.json wilde openen of opslaan.)

Ik vermoed dat de json code niet getoond moet worden, maar door server/client verwerkt moet worden om mij als admin een melding door te geven.

Dit is een voorbeeld van getoonde json code:

Code: Selecteer alles

{"MESSAGE_TITLE":"Informatie","MESSAGE_TEXT":"De e-mail is verstuurd.<br \/><br \/><a href=\".\/index.php\">Terug naar het forumoverzicht<\/a>","S_USER_WARNING":false,"S_USER_NOTICE":true,"REFRESH_DATA":{"time":3,"url":"https:\/\/aabuizer.nl\/forum_cdh\/index.php"}}
Mijn vraag lijkt enigszins op topic: "vage meldingen", alleen is voor mij de melding goed herkenbaar als passend bij de situatie.

Arno Buizer [paar maanden 3.0 ervaring, kersvers op 3.1]

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 10:44
door ArnoBuizer
Een dag verder met werken met twee forums (nu) draaiend op phpBB 3.1.3 lijkt het mij dat deze JSON text output bedoeld is om als popup na diverse user(admin) acties op het scherm weer te geven.
Om één of andere reden wordt (bij een aantal pagina's ) deze popup (overlay) niet geactiveerd en krijg ik de JSON text naar mijn browser gestuurd.
Enig idee wat hier de oorzaak vankan zijn?
incomplete code op de server misschien? (ontbrekende files, die om één of andere reden niet door FileZilla naar de server zijn gestuurd?)

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 11:35
door John P
Het lijkt mij dat je niet de juiste admin templates op de server hebt staan of niet de juiste javascripts in assets.

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 19:56
door ArnoBuizer
Ik heb met Total Commander een compare gedaan en de fileset op de server is identiek aan de inhoud (behalve de config.php, store en images dirs) van de zipfile die ik via http://www.phpbb.nl/downloads/?c=6&f=phpBB-NL-3.1.3.zip heb gedownload. Er moet dus iets anders zijn dat dit stukje 'AJAX' dwarszit.

Dit issue treedt o.a. op bij aanpassen van settings via
ucp.php?i=ucp_prefs&mode=view

(op twee apart van elkaar geïnstalleerde forums (beide via upgrade van 3.0.12 / 3.0.13PL1) die draaien op mijn NAS (Synology DS209))

op de pagina adm/index.php
gaat het GOED met bijv. de cache legen, dan verschijnt een ronddraaiend figuur om activiteit aan te geven en vervolgens een 'popup' met eind mededeling (wegklikbaar met (x) rechtsboven).

Echter bij Statistieken synchroniseren gebeurt er tijdens het wachten niets, waarna enige seconden de Platte JSON Tekst (voor AJAX verwerking bedoelt neem ik aan) verschijnt:

Code: Selecteer alles

{"MESSAGE_BODY":"\n\t<h3>Bevestig<\/h3>\n\t<p>Weet je zeker dat je de statistieken wilt synchroniseren?<\/p>\n\n\t<fieldset class=\"submit-buttons\">\n\t\t<input type=\"button\" name=\"confirm\" value=\"Ja\" class=\"button2\" \/>&nbsp;\n\t\t<input type=\"button\" name=\"cancel\" value=\"Nee\" class=\"button2\" \/>\n\t<\/fieldset>\n\n","MESSAGE_TITLE":"Bevestig","MESSAGE_TEXT":"Weet je zeker dat je de statistieken wilt synchroniseren?","YES_VALUE":"Ja","S_CONFIRM_ACTION":".\/..\/adm\/index.php?i=acp_main&mode=main&sid=df301e3230225f48aa2c030408fdfc84&confirm_key=3KAL5G17QD&confirm_uid=2&sess=df301e3230225f48aa2c030408fdfc84&sid=df301e3230225f48aa2c030408fdfc84","S_HIDDEN_FIELDS":"<input type=\"hidden\" name=\"i\" value=\"main\" \/>\n<input type=\"hidden\" name=\"mode\" value=\"main\" \/>\n<input type=\"hidden\" name=\"action\" value=\"stats\" \/>\n<input type=\"hidden\" name=\"confirm_uid\" value=\"2\" \/>\n<input type=\"hidden\" name=\"sess\" value=\"df301e3230225f48aa2c030408fdfc84\" \/>\n<input type=\"hidden\" name=\"sid\" value=\"df301e3230225f48aa2c030408fdfc84\" \/>\n"}
Een zeer vreemd en schijnbaar inconsequent verschijnsel.
Dit treedt overigens op op verschillende client computers.

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 20:55
door John P
Interessant, ik zie inderdaad nu pas dat de ajax output alleen bij cache legen en session opschonen wordt gebruikt. De overige opties zijn zonder ajax.

Bij het aanpassen van settings in het ucp zie ik ook geen data-ajax="true" in het formulier dus krijg je alleen een trigger error.

Lijkt erop dat je server alles als ajax calls ziet om het maar eens voorzichtig uit te drukken.

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 21:19
door ArnoBuizer
Ik zie voor dit panel bij bijna alle acties ajax aan staan:
in bronweergave (via browser chrome) van adm/index.php?i=acp_main

Code: Selecteer alles

			<form id="action_online_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main" data-ajax="true">
				<dl>
					<dt><label for="action_online">De meeste gebruikers tegelijkertijd online resetten</label><br /><span>&nbsp;</span></dt>
					<dd><input type="hidden" name="action" value="online" /><input class="button2" type="submit" id="action_online" name="action_online" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

			<form id="action_date_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main" data-ajax="true">
				<dl>
					<dt><label for="action_date">Opstartdatum van het forum resetten</label><br /><span>&nbsp;</span></dt>
					<dd><input type="hidden" name="action" value="date" /><input class="button2" type="submit" id="action_date" name="action_date" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

			<form id="action_stats_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main">
				<dl>
					<dt><label for="action_stats">Statistieken synchroniseren</label><br /><span>Herberekend het aantal berichten, onderwerpen, gebruikers en bestanden.</span></dt>
					<dd><input type="hidden" name="action" value="stats" /><input class="button2" type="submit" id="action_stats" name="action_stats" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

			<form id="action_user_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main">
				<dl>
					<dt><label for="action_user">Berichtentellers synchroniseren</label><br /><span>Alleen bestaande berichten worden meegenomen. Opgeschoonde berichten zullen niet geteld worden.</span></dt>
					<dd><input type="hidden" name="action" value="user" /><input class="button2" type="submit" id="action_user" name="action_user" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

			<form id="action_db_track_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main">
				<dl>
					<dt><label for="action_db_track">Gestipte onderwerpen synchroniseren</label><br /><span>Eerst worden alle onderwerpen ongemarkeerd, daarna worden onderwerpen die de afgelopen zes maanden activiteit hebben gehad opnieuw gemarkeerd.</span></dt>
					<dd><input type="hidden" name="action" value="db_track" /><input class="button2" type="submit" id="action_db_track" name="action_db_track" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

						<form id="action_purge_sessions_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main" data-ajax="true">
				<dl>
					<dt><label for="action_purge_sessions">Alle sessies opschonen</label><br /><span>Alle sessies opschonen. Dit zal alle gebruikers afmelden door het legen van de sessietabel.</span></dt>
					<dd><input type="hidden" name="action" value="purge_sessions" /><input class="button2" type="submit" id="action_purge_sessions" name="action_purge_sessions" value="Nu uitvoeren" /></dd>
				</dl>
			</form>
			
			<form id="action_purge_cache_form" method="post" action="./../adm/index.php?i=acp_main&sid=df301e3230225f48aa2c030408fdfc84&mode=main" data-ajax="true">
				<dl>
					<dt><label for="action_purge_cache">Cache legen</label><br /><span>Leeg alle cache gerelateerde items, dit omvat alle gecachede templatebestanden of queries.</span></dt>
					<dd><input type="hidden" name="action" value="purge_cache" /><input class="button2" type="submit" id="action_purge_cache" name="action_purge_cache" value="Nu uitvoeren" /></dd>
				</dl>
			</form>

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 21:30
door John P
Ja maar bij statistieken, waar jouw vraag over ging niet, en zou er dus gewoon een trigger error moeten komen terwijl jij schrijft dat er toch json terug komt.

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 21:58
door ArnoBuizer
Hoe dan ook. Ik weet niet wat er fout zit, maar het is een hardnekkig fenomeen dat zich door het hele forum voordoet.
Ik zat net met User Profile Custom profile fields te spelen en daar trad het ook op. Zodanig dat ik uit de JSON tekst opmaak dat ik een keuze had moet maken en dat ik dat dus niet kan.
Behalve dat ik (en gebruikers van het forum die geen admin zijn?) terugmeldingen mis, hindert het dus ook de werking van het forum.

Ben ik uniek met deze ervaring met deze versie (3.1.3) of is het universeler?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 16 mar 2015, 23:09
door John P
Ik heb al heel wat 3.1.3 forums geupload maar dit nog niet gehoord.
Mijn vermoeden blijft toch gaan naar het feit dat je server denkt dat er een ajax request is zeker daar er bij statistieken geen ajax request is.

Misschien eens een testje inbouwen in /phpbb/request/request.php functie is_ajax() wat er teug komt?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 12:13
door Ger
Ga in het beheerderspaneel eens naar Systeem -> PHP informatie. Welke PHP versie zie je dan?

En doe vervolgens eens een Ctrl + F naar json. Wat zie je daar?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 15:21
door ArnoBuizer
PHP Version 5.3.29
json
json support enabled
json version 1.2.1

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 15:39
door ArnoBuizer

Code: Selecteer alles

	public function is_ajax()
	{
		$result = $this->header('X-Requested-With') == 'XMLHttpRequest';

		$test_output = sprintf("X-Requested-With: %s\n", $this->header('X-Requested-With'));
		$test_output .= sprintf("is_ajax: %s\n", $result? "True":"False");
		$test_output .= sprintf("=============\n");
		$handle = fopen("/var/services/web/forum_vga/test_output.txt", "a");
		fwrite($handle, $test_output); 
		fclose($handle); 
		return $result;
	}
// klikken op ACP om naar beheerpanel te gaan:
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
// klikken op Purge the cache (en de popups tot actie compleet is)
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
// klikken op Resynchronise post counts:
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
// waarna volgende tekst op scherm verscheen:
{"MESSAGE_BODY":"\n\t<h3>Confirm<\/h3>\n\t<p>Are you sure you wish to resynchronise post counts?<\/p>\n\n\t<fieldset class=\"submit-buttons\">\n\t\t<input type=\"button\" name=\"confirm\" value=\"Yes\" class=\"button2\" \/>&nbsp;\n\t\t<input type=\"button\" name=\"cancel\" value=\"No\" class=\"button2\" \/>\n\t<\/fieldset>\n\n","MESSAGE_TITLE":"Confirm","MESSAGE_TEXT":"Are you sure you wish to resynchronise post counts?","YES_VALUE":"Yes","S_CONFIRM_ACTION":".\/..\/adm\/index.php?i=acp_main&mode=main&sid=357c47ec6eac71eea8a8f7be68f81a43&confirm_key=1U1A9IVMP0&confirm_uid=2&sess=357c47ec6eac71eea8a8f7be68f81a43&sid=357c47ec6eac71eea8a8f7be68f81a43","S_HIDDEN_FIELDS":"<input type=\"hidden\" name=\"i\" value=\"main\" \/>\n<input type=\"hidden\" name=\"mode\" value=\"main\" \/>\n<input type=\"hidden\" name=\"action\" value=\"user\" \/>\n<input type=\"hidden\" name=\"confirm_uid\" value=\"2\" \/>\n<input type=\"hidden\" name=\"sess\" value=\"357c47ec6eac71eea8a8f7be68f81a43\" \/>\n<input type=\"hidden\" name=\"sid\" value=\"357c47ec6eac71eea8a8f7be68f81a43\" \/>\n"}

Ik vermoed dat:
of de header bij de json output niet helemaal passend is,
of dat het bestandstype (de meegegeven extensie) op mijn server niet in de mimetypes serverconfigfile is opgenomen...

Ik zal eens kijken hoe dat zit bij een eigen pagina met AJAX interactie (die op dezelfde NAS draait).

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 23:14
door John P
Vermoede het al, je server ziet alles als een XMLHttp request

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 23:17
door ArnoBuizer
Nee hoor, ik zie ook 'blanco' requests. Bovendien gaan niet alle AJAX requests 'fout'. Diegene die hier getoond worden gaven geen JSON tekst te zien...

=============
X-Requested-With:
is_ajax: False
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With: XMLHttpRequest
is_ajax: True
=============
X-Requested-With:
is_ajax: False
=============

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 17 mar 2015, 23:19
door ArnoBuizer
Zijn er nog andere variabelen/objecten interessant om te bekijken?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 18 mar 2015, 09:14
door Ger
Kun je misschien eens een blanco phpBB 3.1 forum naast je eigenlijke forum installeren? Hiervoor dan even een nieuw downloadpakket van de site hier pakken zodat je zeker weet dat er met de bestanden niets mis is. Als het probleem dan alsnog optreedt, dan moet je denk ik toch even contact opnemen met je host.

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 18 mar 2015, 10:24
door ArnoBuizer
Ik ben zelf de host (forums draaien op een Synology NAS in eigen beheer).
Ik vraag me af hoe het kan dat de ene Ajax XMLHttpRequest wel goed verwerkt wordt en de andere niet.
Verder kreeg ik gistermiddag/avond de ervaring dat na het toevoegen van de logging (via een fwrite) het issue zich niet meer voor heeft gedaan...
zou die aanpassing (fopen fwrite fclose tijdens is_ajax() impact kunnen hebben op de request 'flow' in/van het forum?
Al met al hoop ik een (duidelijke) oorzaak te vinden, zodat ook anderen profijt kunnen hebben van wat ik (we) hierbij ontdekken.
Mogelijk een specifieke extra vereiste, die nu (nog) niet in de requirements is vermeld.
ps. test de installatie het systeem op deze requirements?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 18 mar 2015, 12:04
door John P
Gebeurt het ook als je forum via het http protocol loopt?

Re: JSON respons wordt als platte tekst weergegeven

Geplaatst: 18 mar 2015, 12:40
door ArnoBuizer
Ik heb geen idee. Het zijn besloten forums met o.a. medische/persoonlijke info die voor derden afgeschermd moet blijven. Dus daar experimenteer ik liever niet mee.

Verder heb ik het verschijnsel niet meer zien optreden sinds ik middels fopen/fwrite/fclose een paar details via is_ajax() laat loggen. (POST/GET/referer/RequestURI/Is_Ajax).

Verder heb ik de 'onderhoudstaken' nu ingeschakeld via de crontab van de server (ipv onderwater bij de pagina bezoeken door de gebruikers).