Hoi Mensen,
Ik heb een probleem. Ik probeer een ajax request te maken die JSON retourneerd. Nu werkt dit allemaal alleen het rare is dat ik de juiste gegevens terugkrijg (en deze ook gewoon in een <div> kan appenden) alleen krijg ik een 'download' verzoek of ik het JSON bestand wil downloaden (het downloadvraagje onderin de browser 'wilt u x4343.json openen of opslaan? Ik weet niet of dit aan mijn symfony instellingen lig of dat ik iets anders fout doe. De gegevens die ik terug zijn zijn de correcte:

Formulier(tje)

<form id="nameForm" action="{{path('zoeknamen')}}" method="post">
<input class="form-control" id="naam" name="naam" type="text">
<input type="submit" class="btn btn-default" value="Zoeken">
</form>


Javascript code

 $("#nameForm").submit(function(){            
            var verzoekString = $("#nameForm").serialize();
            var url = $("#nameForm").attr("action");           
            $.ajax(
            {				
                type: "POST",
                url: url,
				dataType: "json",
				data: verzoekString,
				success: function(data)		
				{
					$("#legeDiv").empty();
					var gegevens = data;
                    if(gegevens[0]['status'] != "geen resultaat")
                       {
                            for(var a = 1; a < gegevens.length; a++)
                            {                                
                                $("#legeDiv").append(gegevens[a]['naam']+"<br>");
                            }
                               
                        }
                        else
                        {
                            alert('geen results');
                        }					
			},
			error: function(jqXHR, textStatus, errorThrown)
			{
				alert('jqxhr: '+jqXHR);
				alert('textStatus: '+textStatus);
				alert('errorThrown: '+errorThrown);
			}				
            });		
        });


Routing.yml (gedeelte)

#Haalt de namen op
zoeknamen:
     path:  /test/zoeknamen
     defaults: {_controller: AppBundle:Lookup:zoekNamen}
     requirements:
        _method:  POST


Stukje code in controller

//Alles wordt goed opgehaald dus ik denk dat misschien met de response te maken heeft:
 $response = new JsonResponse($namen);
 $response->headers->set('Content-Type',200, 'application/json');
 return $response;


Dus het hele request gebeuren gaat goed alleen het 'downloadscherm' kan ik ff niet uitkomen. Weet iemand hier iets vanaf of kan me de juiste richting opsturen?

Bedankt!
--edit code tags aangepast --
Ik heb het even geprobeerd maar ik krijg nog steeds het downloadschermpje te zien
Dat werkte dus niet, helaas. :-(

Misschien ligt het aan de browser. Ik kan me herinneren dan IE8 bijvoorbeeld wel eens moeilijk deed bij een JSON request. De oplossing was toen om de MIME aan te passen naar 'text/plain' i.p.v. van 'application/json'.

Dat zou je eens kunnen proberen.
Ik heb het in alles geprobeerd (ff, ie en chrome) en overal geeft hij wel de json string ergens te downloaden (of tonen op het scherm).

Ik heb het gevoel dat het ergens in de routing niet goed gaat omdat ie probeert naar een andere pagina te gaan (door routing.yml). Misschien moet ik iets als een service aanmaken maar moet ff uitvogelen of zoiets bestaat en hoe :)
$response->headers->set('Content-Type',200, 'application/json');

Die regel mag er in zijn geheel uit.


Tip: probeer het eens met een GET request en surf dan eens met de browser naar .../test/zoeknamen?...

Als het goed werkt moet je netjes een JSON string te zien krijgen in je browser.
Sorry late reactie, Had gister al me bericht getypt maar vergeten op het 'reageren' knopje te drukken.

Als ik het met een get request doe komt inderdaad de json string in de browser te staan. Tevens wordt ik doorgerouteerd naar test/zoeknamen. Ik heb dus echt het vermoeden dat het door het routing.yml niet helemaal goed gaat en ik het als een service moet definieren (zodat ik niet doorgerouteerd wordt). Ben nu bezig met de handleiding hiervan aan het doorspitten. Als ik dit heb getest laat ik hier wel weten of het goed gaat of niet :).

Tot zover bedankt in ieder geval.
Ama saril op 23/04/2015 15:04:18

Tevens wordt ik doorgerouteerd naar test/zoeknamen.


Huh? Je krijgt netjes de JSON te zien maar daarna wordt je automatisch doorgestuurd?

Geen idee wat je precies doet maar klinkt me echt vreemd in de oren :-)

Wat ik wel weet is dat de volgorde van van de routes belangrijk kan zijn maar dan moet je nog niet doorgestuurd worden..
Ik vindt het ook heel raar allemaal. Heb wel vaker ajax requests gedaan en dit is nog nooit voorgekomen, vandaar dat ik het maar hier heb gepost :)
Heb hem inmiddels opgelost en zal hem hier posten mocht iemand ooit hetzelfde krijgen:
Het kwam erop neer dat het form echt 'gesubmit' werd waardoor routing.yml hem probeerde door te retouren.
Heb hem opgelost door de prefentDefault() functie te plaatsen voor mijn ajaxaanroep.

Reageren