Mi dispiace se il mio inglese non è perfetto, come posso vedere che non ero abbastanza chiaro ... Una delle mie principali preoccupazioni si spiega con altra persona qui: http://http://forum.jquery.com/topic/cross-domain-ajax-and-ie
Quindi, quale alternativa esiste?
1) XDomainRequest
Personalmente penso che questo sia il modo migliore per attuare cross-site scripting in IE8 + (come viene supportato in modo nativo). L'unico problema è che è un modo solo Microsoft. Ma come molte altre cose con la famiglia IE possiamo facilmente estendere la funzionalità Ajax di JQuery.
In base alla documentazione, è necessario specificare alcune intestazioni aggiuntive nel dominio1.tld, for example, in PHP come questo:
header("Access-Control-Allow-Origin: http://domain2.tld"); //use * for any
Forse la prossima alternativa è utile per fornire l'attuazione jquery di XDomainRequest;
Update (a): C'è un XDR library (non jquery), che "sostituire" la classe XHR per renderlo cross-browser, si basa in pmxdr client library. Non l'ho ancora provato.
2) CORS
L'unico problema con questo plugin è che non è esattamente un'estensione come le sue funzioni sono chiamati in modo diverso, quindi è necessario o modificare i codici o avvolgere quel plugin.
Aggiornamento (b): Ho modificato il plug-in CORS per renderlo più semplice. Controlla la mia altra risposta per ottenere il codice.
3) JsonP in JQuery
questo dovrebbe essere il modo più semplice per risolvere il mio problema (come ho il controllo di entrambi i server). Nativamente la maggior parte dei browser supporta lo scripting cross-site, solo se viene usato il formato JSON (credo che anche xml possa essere usato). In questo caso viene utilizzata la funzione $ .getJSON(). Per farlo funzionare, è necessario specificare (come afferma la documentazione) callback =? nell'URL, ad esempio:
$.getJSON("http://domain2.tld/index.php?callback=?",funciton(res){ ... });
Il "?" dopo "callback" sarà sostituito con un identificatore ... nel file php, è necessario per ottenere tale identificatore e circondano il codice JSON come questo:
print_r($_GET["callback"])."(".json_encode($mydata).");";
(che ho avuto ad esempio da here)
Il problema con questo metodo è che se si desidera recuperare solo HTML, deve risiedere all'interno di un oggetto json e quindi rendere il processo un po 'più complicato e travolgente.
4) jquery.jsonp plugin
Se avete bisogno di convalide e funzioni aggiuntive per il supporto nativo JSONP in jQuery, quindi provare questo plugin che sarà anche semplificare il processo.
5) xdomainajax
Questo plugin utilizza un aproach interessante utilizzando il servizio di Yahoo YQL, in cui qualsiasi pagina web (o una parte di esso) possono essere convertiti in JSON, rendendo possibile importarlo in javascript. Questo metodo è utile per quelle situazioni in cui non è possibile modificare il formato di origine.
6) flXHR
Questa soluzione utilizza Flash (SWF) per ottenere la magia. Potrei dire che questo è un modo molto veloce per ottenere un'implementazione quasi cross-browser (poiché si basa sul supporto flash). Questo metodo può essere l'ideale per quei siti in cui il flash sarà presente (di sicuro). Tuttavia, se il tuo sito non richiede flash, questo diventa il principale svantaggio dato che gli utenti devono avere installato Flash per funzionare.
7) xdajax
Questa soluzione si basa nell'attuazione YUI insieme con l'approccio "Flash".
8) Se nessuna delle opzioni precedenti è buona per te, ricorda che puoi ancora usare il vecchio trucco di inserire un tag per importare il codice JS.
9) Anche la riduzione della sicurezza IE al minimo risolve il problema. Ma penso che non sarebbe bello avere un messaggio del genere: "Si prega di abbassare le impostazioni di sicurezza per utilizzare questo sito" ... lol
Spero che questo possa aiutare gli altri in una situazione simile.
Grazie per questo! Tuttavia, nell'impiego recente di questo caso, ho scoperto che rompe leggermente la funzionalità nativa di '$ .get' e' $ .post', che restituiscono ciascun oggetto jqXHR. Questo è facilmente aggiustato modificando i blocchi try nel tuo codice per leggere 'return $ ._ get (url, data, callback, type);' e 'return $ ._ post (url, data, callback, type);' – itsmequinn