Problemer med login via ajax kald

Tags:    ajax code-igniter flexi-auth php

Hejsa.

Jeg har købt mig et lækkert design som gerne danne ramme om mit back-end.

Den er designet med noget AJAX til at lave login, det vil jeg meget gerne bibeholde.
Jeg kan bare ikke få den til at gå igennem

Min controller ser således ud:
Fold kodeboks ind/udPHP kode 


Min js ser således ud:
Fold kodeboks ind/udJScript kode 


Den kommer blot frem med den alert der er der.
Jeg har testet imod en test controller at jeg rent faktisk bliver logget ind, og det gør jeg




7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det her er et skud i tågen - et meget hurtigt bud kunne være at den der redirect du laver ved succesfuldt login, sender en form for HTTP-kode end 200.

edit: Eller, ved at læse det igen, så er det da bare en værdi du sender ud og ikke en http redirect?



Indlæg senest redigeret d. 05.05.2014 16:48 af Bruger #16372
Du siger, du får en alert. Det eneste sted i din postede kode, hvor du har et alert() kald er i "error" callbacket til ajax kaldet. Ergo må responskoden til resultatet være fx i 500 eller 400 rangen (henholdsvis server- og brugerfejl).

Check evt. med Firebug's Net/XHR tab eller Chrome's tilsvarende, præcist hvilket respons, inkl. responskode, der kommer tilbage. For PHP-koden i din Controller kan sagtens køre rigtigt, men sende den forkerte responskode. Tjek evt. om det view du kalder, til sidst i din controller, rent faktisk findes. For hvis det ikke gør, kan CI godt finde på at sætte 404 som responskode, i hvert fald i tidligere versioner.



Indlæg senest redigeret d. 05.05.2014 17:31 af Bruger #8223
Har du prøvet at debugge dig igennem?
Eksempelvis skrive nogle små output ud i din controller for at se hvor langt du evt kommer?
Eller bare skære metoden ned (eksempelvis bare start med at returnerer en tekst), få det til at virke, derefter så udvid metoden indtil du finder fejlen, eller metoden virker.





Indlæg senest redigeret d. 06.05.2014 08:01 af Bruger #16979
Den melder en 302 found tilbage når jeg kigger i XHR.
Det kan jeg bare ikke helt få til at passe

Jeg har forsøgt at ændre min controller, eller har rettere skrevet en ny.
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 07.05.2014 08:59 af Bruger #15663
302 er en statuskode for redirect. Udfører din redirect() en HTTP redirect? Det tror jeg som sagt ikke at man kan med ajax.

Nevermind, har efterprøvet og jQuery.ajax kan godt håndtere end 302 redirect.



Indlæg senest redigeret d. 07.05.2014 11:04 af Bruger #16372
Jamen det siger det er på min post og ikke på min get del




Du har følgende i din kode:
Fold kodeboks ind/udPHP kode 


Det du ser ud til at ville med det, er at give et JSON respons med en "redirect_url" parameter der indeholder urlen brugeren skal redirectes til.

Det er ikke det, din kode rent faktisk gør. I CodeIgniter er der en funktion der hedder redirect(), som du benytter her, der rent faktisk laver et redirect. Det betyder at dit json_encode'ede respons aldrig bliver givet, fordi ajax-kaldet bliver redirected på serveren, til den side man kommer til når man er logget ind, som giver HTML output. Dermed får dit ajax-kald ikke json tilbage, og derfor får den en "error".

Det du istedet skal gøre, er at bruge site_url() funktionen istedet for redirect(), til at generere url'en som du vil give tilbage som respons.



Indlæg senest redigeret d. 08.05.2014 13:48 af Bruger #8223
t