OK, ecco la situazione: ho un CMS ospitato esternamente che funziona perfettamente per il 99% delle nostre esigenze. Comunque sulle cose più avanzate iniettavo il mio CSS + JS e faccio la magia. Il problema che sto incontrando è il caricamento di una semplice pagina HTML da chiamate jQuery.ajax(). Sembra funzionare nel senso che non vengono lanciati avvertimenti o errori; tuttavia nel mio gestore di successo (che è in esecuzione), la risposta è vuota!jQuery AJAX con due domini
Mi sono grattato la testa per l'intera mattinata cercando di capirlo e l'unica cosa che posso pensare è che ha qualcosa a che fare con il problema del dominio incrociato (anche se sembra funzionare).
iniettato JavaScript:
$(document).ready(function() {
doui();
});
function doui() {
$.ajax({
url: 'http://apps.mydomain.com/css/feecalc/ui.htm',
cache: false,
success: ajax_createUI,
charset: "utf-8",
error: function(e) {
alert(e);
}
});
}
function ajax_createUI(data, textStatus) {
alert(data);
$("#ajax-content").html(data);
}
mio ajax_createUI() gestore successo viene chiamato e textStatus è "successo"; tuttavia i dati sono vuoti.
Questo JS file risiede @http://apps.mydomain.com/css/js/feecalc.js tuttavia il sito web CMS (che ottiene il JS iniettato in esso) risieda @http://www.mydomain.com/
sono io solo di essere stupido o è un bug che sembra che dovrebbe funzionare, ma isn 't?
C'è un motivo per cui non si sta generando un errore? Presumo (e sto leggendo il tuo link) che l'origine è della pagina e non della sceneggiatura? –
Ha ragione: il dominio www.natronacounty-wy.gov ottiene lo script con cui è stato incollato, quindi lo script chiama http: //apps.natronacount-wy ... dalla pagina www.natronacounty-wv.gov? – Nick
corretto. Il CMS è il sistema www, nel CMS ho incollato i tag
Credo che il metodo più appropriata per il caricamento di una pagina è .load()
In secondo luogo, come ha detto Nick, si verificano problemi di dominio trasversali . Un'opzione sarebbe l'esecuzione di load() su una pagina del tuo sito che funge da proxy per richiedere la pagina che ti serve.
Per esempio: Si richiede .load (/myPage.aspx) e la richiesta MyPage.aspx http://apps.natronacounty-wy.gov/css/feecalc/ui.htm e restituirlo al cliente
fonte
2010-05-25 19:19:50
Non riesco a farlo perché www non è il mio server, è il sistema CMS del fornitore. apps È il mio server su cui è memorizzato tutto il mio JS. –
@Andrew Penso che tu stia fraintendendo, dovresti scrivere il proxy sul tuo server che ha le chiamate javascript. In questo modo scrivi il tuo javascript per colpire una pagina locale/servlet che carica il contenuto remoto –
@ Flash84x Non riesco a scrivere alcun codice personalizzato sul server che sarebbe in grado di effettuare il proxy delle chiamate. L'unico server a cui ho accesso è app e se potessi leggere un risultato HTTP non avrei bisogno di un proxy. –
Si potrebbe anche interrogare la vostra richiesta tramite YQL (Yahoo! Query Language), che risulterà in un file JSONP (supporta anche XMLP -> XML con una funzione di callback). Ciò potrebbe ridurre le prestazioni, ma Yahoo fornisce server veloci.
fonte
2010-05-25 19:23:32 fb55
Ho provato il plugin jQuery che utilizza YQL e ha fatto la stessa cosa :(http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/ –
È davvero semplicissimo eseguire il rollover, basta scrivere la funzione di callback e la query "SELECT * da html dove url = '+ url +'", mentre si seleziona XML come output e la funzione di callback come callback. All'interno della funzione di callback, è possibile selezionare ciò che si desidera visualizzare e aggiungerlo al DOM. – fb55