[ZEND/jQuery] Probleem met JSON data
Via een AJAX request binnen jQuery na het valideren van een form wordt er ingelogd doormdiddel van Zend_Auth, dit gaat allemaal goed totdat ik een JSON array wil retournen die er alsvolgt uitziet:
Maar jQuery kan hem maar niet uitlezen:
En krijg bij die alert continu: 'undefinded'. Heb dingen zoals de action en alle overige code even weggehaald. Ik weet niet waar het probleem zit en hoop daarom dat iemand mij kan helpen of eventueel mee kan denken.
Alvast bedankt en een fijne avond!
Maar jQuery kan hem maar niet uitlezen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
submitHandler: function() {
$.ajax({
type: 'POST',
url: '',
data: $(formId).serialize(),
dataType: 'JSON',
complete: function(data) {
alert(data.formValid);
}
});
};
$.ajax({
type: 'POST',
url: '',
data: $(formId).serialize(),
dataType: 'JSON',
complete: function(data) {
alert(data.formValid);
}
});
};
En krijg bij die alert continu: 'undefinded'. Heb dingen zoals de action en alle overige code even weggehaald. Ik weet niet waar het probleem zit en hoop daarom dat iemand mij kan helpen of eventueel mee kan denken.
Alvast bedankt en een fijne avond!
firefox + firebug? Probeer dan eens console.log(data) in plaats van die alert... zie je veel meer.
Anders
krijg je een indruk van wat er zoal in data terugkomt.
Anders
krijg je een indruk van wat er zoal in data terugkomt.
Wat zou ik daar voor info moeten uithalen? Veel meer kan ik er niet uithalen.
Code (php)
1
readyStatesetRequestHeadergetAllResponseHeadersgetResponseHeaderoverrideMimeTypeabortdonefailprogressstateisResolvedisRejectedthenalwayspipepromisesuccesserrorcompletestatusCoderesponseTextstatusstatusText
Gewijzigd op 08/04/2012 21:52:09 door PHP Scripter
Is het niet "true" in JSON?
Bas, of chrome met de webkit web inspector of opera die ook al een inspector heeft, precies zoals IE. En ook FireFox heeft vanaf het begin al een console zonder firebug en ook FireFox heeft sinds FF10 een inspector (zeer slecht, maar dat laten we buiten beschouwing).
Bas, of chrome met de webkit web inspector of opera die ook al een inspector heeft, precies zoals IE. En ook FireFox heeft vanaf het begin al een console zonder firebug en ook FireFox heeft sinds FF10 een inspector (zeer slecht, maar dat laten we buiten beschouwing).
Gewijzigd op 08/04/2012 21:55:09 door Wouter J
ah. Je hebt dus de responseText nodig; kennelijk moet je die ook nog uitpakken. Hoe? Misschien met JSON.decode? (eval probeer ik te vermijden, dat is ook een optie)
@Wouter, true over de browsers. Ik weet niet uit mijn hoofd of je in JSON een bool moet quoten. Ik denk van niet.
@Wouter, true over de browsers. Ik weet niet uit mijn hoofd of je in JSON een bool moet quoten. Ik denk van niet.
Ik zie de fout al, je gebruik complete maar je moet success gebruiken dan werkt het wel. Complete geeft je een object met verschillende gegevens, zoals status en responseText.
@Bas, even getest en het hoeft niet.
@Bas, even getest en het hoeft niet.
Wouter J op 08/04/2012 22:32:31:
Ik zie de fout al, je gebruik complete maar je moet success gebruiken dan werkt het wel. Complete geeft je een object met verschillende gegevens, zoals status en responseText.
@Bas, even getest en het hoeft niet.
@Bas, even getest en het hoeft niet.
Dat heb ik bewust gedaan omdat hij in 'succes' helemaal niets doet omdat de JSON niet goed geretourneert wordt.
Dan moet je dit gebruiken:
Maar dan is eigenlijk het hele nut van de JSON type weg, je moet nu namelijk alsnog zelf de JSON parsen.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$.ajax({
type: 'POST',
url: '',
data: $(formId).serialize(),
dataType: 'JSON',
complete: function(data) {
var result = JSON.parse(data.responseText);
alert(result.formValid);
}
});
type: 'POST',
url: '',
data: $(formId).serialize(),
dataType: 'JSON',
complete: function(data) {
var result = JSON.parse(data.responseText);
alert(result.formValid);
}
});
Maar dan is eigenlijk het hele nut van de JSON type weg, je moet nu namelijk alsnog zelf de JSON parsen.
@Wouter Het werkt inderdaad wel zo. Wat kan dan het probleem zijn? De 'Content-Type' die ZEND retourneert is ook 'application/json' en heb het ook al geprobeerd met 'text/html', maar werkt ook niet. Cache staat ook uit.
Gewijzigd op 08/04/2012 23:11:39 door PHP Scripter
Kun je geen online voorbeeldje maken ofzo? Ben ook wel benieuwd.
Eventueel kun je zelf een AJAX request als test maken die wel werkt (dus gewoon naar een normale test.json bestand ofzo). Vervolgens ga je de jqXHR objects vergelijken in bijv. de complete, beforeSend en 302 status callback. Zie je verschillen tussen de Zend en de test versie?
Eventueel kun je zelf een AJAX request als test maken die wel werkt (dus gewoon naar een normale test.json bestand ofzo). Vervolgens ga je de jqXHR objects vergelijken in bijv. de complete, beforeSend en 302 status callback. Zie je verschillen tussen de Zend en de test versie?
Online voorbeeld gaat nu (vanavond) niet meer lukken. Maar ik vindt dit gewoon erg raar.
Graag zie ik jullie reacties tegemoet.
Toevoeging op 09/04/2012 12:45:19:
Totdat ik een oplossing heb gevonden blijf ik even de 'oplossing' van Wouter gebruiken.
Ik hoop dat er in de tussentijd iemand een oplossing heeft.
Graag zie ik jullie reacties tegemoet.
Toevoeging op 09/04/2012 12:45:19:
Totdat ik een oplossing heb gevonden blijf ik even de 'oplossing' van Wouter gebruiken.
Ik hoop dat er in de tussentijd iemand een oplossing heeft.
Hoi PHP Scripter,
Ik test net een JSON calletje en dit werkt bij mij?
Ik test net een JSON calletje en dit werkt bij mij?




