2012-12-06 11 views
6

Próbuję uzyskać JSON, hostowane na serwerze lokalnym tutaj, ale z jakiegoś powodu to nie działa. Jeśli uderzę w mój adres URL w przeglądarce, zwróci Json poprawnie i jeśli użyję innego adresu URL, otrzymam dane.Jak debugować błąd zapytania ajax?

Moja oryginalna metoda getJSON:

getJSON:

$.getJSON(url, 

        function(data) { 
         console.log('got something'); 
         alert(data);  

        }); 

Teraz chcę zobaczyć, co dokładnie się stało. Przepisałem go jako żądanie Ajax, a na moim błędzie zwrotnym jqxhr daje mi wiele rzeczy, których nie rozumiem. Czy mogę uzyskać więcej informacji na temat tego błędu?

TextStatus wartość "error"

errorThrown jest null

$.ajax({ 
        url: url, 
        dataType: 'json', 
        success: function(data) { 
         console.log('got something'); 
         alert(data);  
         }, 
       error: function(jqxhr,textStatus,errorThrown) 
        { 
         console.log(jqxhr); 
          console.log(textStatus); 
          console.log(errorThrown);        

          for (key in jqxhr) 
           alert(key + ":" + jqxhr[key])                 
          for (key2 in textStatus) 
           alert(key + ":" + textStatus[key]) 
          for (key3 in errorThrown) 
           alert(key + ":" + errorThrown[key]) 

        //<--- All those logs/alerts, don't say anything helpful, how can I understand what error is going on? ----> 

       }}); 

Wreszcie json mam wrócić JEST

[{"message": "login failed"}] 

I nie można używać Firebug, chrom konsola lub inne narzędzia deweloperskie, ponieważ jest to aplikacja mobilna opracowana przy użyciu Phonegapa!

+0

Czy adres URL w tej samej domenie, poddomenie i protokole jest zgodny z bieżącą stroną? – devnull69

+0

użyj narzędzia dewelopera firebuga lub chrome i klikając w sieci, a Xhr możesz zobaczyć odpowiedź z adresu URL: –

+0

Czy sprawdziłeś na karcie Sieć narzędzia Firebug/Fiddler/Chrome narzędzia, aby zobaczyć, jaki był kod odpowiedzi i tekst? –

Odpowiedz

6

ja zamierzam umieścić moje komentarze do odpowiedzi fo rm, to nie jest rozwiązanie twojego problemu, ale jest to dobry sposób na rozwiązywanie różnych problemów z powracaniem z jQuery Ajax.

Gdy żądasz określonego typu danych w tym przypadku dataType: 'json', żądasz określonego rodzaju danych. Jeśli ten określony typ danych nie zostanie zwrócony, przejdzie do funkcji błędu.

Jeśli komunikat o błędzie nie zawiera informacji wyjaśniających Twój problem, spróbuj zażądać bardziej przyjaznego elementu dataType. W ten sposób możesz zobaczyć, co faktycznie zwraca twoja prośba. Jeśli jego dane inne niż żądane dataType to jest to twój problem i możesz to sprawdzić.

dataType takich jak html lub text będzie bardzo otwarte, aby podać dokładne dane zwrócone z żądanego adresu URL i rozwiązać tamtejsze problemy.

Mam nadzieję, że to trochę pomaga.

+0

To faktycznie rozwiązało mój problem! Dziękuję za to! – caiocpricci2

+0

Cieszę się, że pomogło :) – Kodemon

1

jqxhr - XrayWrapper
textStatus - przedstawia reprezentację tekstową statusu odpowiedzi HTTPS (np sukces, błąd).
errorThrown - XMLHttpRequest

jqxhr.status - podaje kod odpowiedzi HTTP, takich jak 200, 404, 500 itd ..

Użyj tego fragmentu kodu, aby wydrukować cały klucz w obiekcie json

var output = ''; 
for (property in object) { 
    output += property + ': ' + object[property]+'; '; 
} 
console.log(output);