2010-02-04 11 views
6

Ho questo script di polling per verificare se un file di testo è stato creato sul server. Funziona alla grande localmente, ma fallisce quando il file si trova su un dominio diverso. Come potrei riscrivere questo per il supporto del dominio incrociato?JQuery ajax chiamata interdominio e problema di autorizzazione

$.ajax({ 
    url: 'http://blah.mydomain.com/test.txt', 
    type: "GET", 
    success: function(result) { 
     //Success! 
     window.location.replace(Successful.aspx'); 
    }, 
    error: function(request, status, error) { 
     setTimeout("VerifyStatus(" + pollingInterval + ")"); 
    } 
    }); 

EDIT: ho finito per usare YQL per risolvere la questione del dominio croce e anche se funziona, YQL è molto lento che è l'aggiunta di un po 'di sovraccarico delle prestazioni. Qualcuno può suggerire una soluzione migliore per le chiamate JQuery cross-domain?

risposta

7

Impostare il tipo di dati a "JSONP" sul vostro $.ajax() chiamata. Dovrai assicurarti che la risposta sia formattata correttamente affinché funzioni. Wikipedia ha una buona sezione su JSONP.

+0

Ciò è positivo se si ha il controllo sul contenuto del file di destinazione. – Bruce

+0

Ho il controllo sulla creazione del file txt. Con jsonp, devo scrivere una stringa JSON nel file di testo? Sto usando ASP.NET e ho problemi a mettere tutto insieme – Nick

+0

@ user102533 corretto. È possibile visitare json.org per un elenco di serializzatori JSON ASP.NET. –

4

Ajax non va nel dominio incrociato. La soluzione migliore è creare una pagina php sul dominio locale che esegue il controllo e andare a -that- con la chiamata ajax.

+0

Questo è un bene se non si ha il controllo sul contenuto del file di destinazione. – Bruce

+0

Ho il controllo del file di testo (creato da un servizio) – Nick

+0

La risposta è scaduta. Esistono due modi diretti per eseguire Ajax tra domini e modi indiretti. ** 1. ** [JSONP] (http://en.wikipedia.org/wiki/JSONP), usa l'iniezione di tag '

Problemi correlati