2012-09-05 11 views
5

Il mio codice simile a questo:AJAX - JQuery GET richiamata non funziona, ma l'accesso ai file JSON ok

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "jsonp"); 

Quando prendo uno sguardo all'interno del menù Network da Firebug vedo una chiamata valida al mio file JSON e quando lo apro, contiene tutte le informazioni.

Ma il Console rimane in silenzio. Nessun segno di una chiamata AJAX né la mia registrazione di data.

La mia chiamata AJAX non si trova nello stesso dominio del file JSON. Ecco perché sto usando jsonp

Qualche idea ??

risposta

13

Non sono del tutto sicuro di quale sia il tuo problema, se ottieni un risultato ma la console rimane silenziosa potresti avere problemi con lo stesso JSON ... prova JSONLint per trovare i problemi .

Inoltre vi consiglio di non utilizzare getJSON ecc

$.ajax({ 
    url: http://files.mysite.com/data.json, 
    dataType: 'jsonp', 
    cache: false, 

    beforeSend: function() { 
     console.log("Loading"); 
    }, 

    error: function (jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    }, 

    success: function (data) { 
     console.log('Success'); 
     console.log(data); 
    }, 

    complete: function() { 
     console.log('Finished all tasks'); 
    } 
}); 

questo modo si ottiene un po 'di gestione degli errori e altre piccole caratteristiche molto interessanti, si potrebbe aggiungere un filatore di caricamento tramite beforeSend, e rimuoverlo tramite completa :)

Edit: Sostituire la funzione di errore con quello qui sotto, che ci dovrebbe dare una migliore idea di quale sia il problema :)

error: function (jqXHR, textStatus, errorThrown) { 
    console.log(jqXHR); 
    console.log(textStatus); 
    console.log(errorThrown); 
} 
+0

la mia console mi dice quanto segue: Caricamento Errore Oggetto {readyState = 4, stato = 200, statusText = "successo "} Terminato tutte le attività - Il menu Rete carica ancora il file, il contenuto e interpreta il JSON ... – Ron

+0

e jsonlint mi dice che il mio JSON è valido – Ron

+0

Quindi sta funzionando correttamente la funzione di errore, ma non la funzione di successo? –

0

È meglio usare $ .getJSON invece di ottenere se si sa che la risposta sarà json. La console dovrebbe funzionare ora

$.getJSON('http://files.mysite.com/data.json', function(data) { 
console.log(data); 
}); 
+1

sens Casi itive! È '$ .getJSON()' – devnull69

0

jsonp non è supportata vedono here, solo XML, JSON, sceneggiatura, html in modo da utilizzare JSON invece se non avete croce dominio questione politica

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "json"); 
+0

sfortunatamente ho un accesso interdominio ... – Ron

+0

@Ron in questo caso, usa $ .ajax con tipo: "get", jsonp è supportato nel metodo ajax :) anche, questo post aiuterà http://devlog.info/2010/03/10/cross-domain-ajax/ –

Problemi correlati