Newsgroup: it.comp.lang.javascript
Titolo: ajax e sito remoto

Ciao a tutti
 
non riesco a caricare i dati dalla pagina remota del server con ajax e 
JQuery 1.8.0
In pratica se testo il sito in locale ottengo i dati (IIS in locale), se 
carico la pagina sul server e chiamo la pagina sul server:ok.
Ma se in locale cerco di caricare i dati dando l'url completo della 
pagina remota non mi carica nulla.
 
Sapete se esiste una qualche limitazione nell'uso di ajax accedendo a 
una pagina su un server remoto ?
 
ecco l'esempio di codice
*****************************
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head><title>x</title>
<script language="javascript">
function caricaAttori(idGr){
var idGruppo=idGr;
if(idGruppo>0){
 
   //var nomePag="gestAjax.asp";
     var nomePag="
http://www.mioSitoRemoto.it/testaj.asp
"; // risponde 
con  "1[:]aldo","2[:]giovanni","3[:]giacomo"
	var listaParametri= "gruppo="+idGruppo ;
 
	$.ajax({
	 type: "GET",
   	 url: nomePag,
	 data:listaParametri,
	 success: function(strRit){//'-- se success
	 var arrListaValori=strRit.split('[#]');
	   for(var u=0; u<=arrListaValori.length-1; u++){
	    var strCompleta=arrListaValori[u];
	    var arrDatiRitorno=strCompleta.split('[:]');
	    var id=arrDatiRitorno[0];
	    var nome=arrDatiRitorno[1];		
	    var str='<option value="'+id+'">'+nome+'</option>';
	     $("#attori").append(str);
	  }
	 }//'-- se success
	});
}
  else{
   $("#attori option").remove();
   }
}
</script>
</head><body>
<select name="idGru" id="idGru" onChange="caricaAttori(this.value)">
     <option value="0">---</option>
     <option value="1">Americani</option>
     <option value="2">Italiani</option>
     <option value="3">Francesi</option>
</select>
 
<select name="attori" id="attori"></select>
</body></html>

      var nomePag="
http://www.mioSitoRemoto.it/testaj.asp
";
 
Non puoi connetterti con AJAX a un dominio diverso da quello dove risiede 
lo script.
 
Bye.

 non riesco a caricare i dati dalla pagina remota del server con ajax
 
Normalmente non puoi accedere a risorse pubblicate su domini differenti 
dalla pagina web tramite ajax.
 
Esistono due metodi per poter aggirare questa limitazione: JSONP e CORS
 
con jsonp 
http://en.wikipedia.org/wiki/JSONP
 è necessario prevedere che i 
dati dal server al client viaggino "wrappati" sotto forma di file javascript 
(in genere creato al volo, e con un buon supporto di jquery)
 
con cors 
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
 è 
necessario fare in modo che il server e il browser supportino header nelle 
chiamate / risposte per specificare che una risorsa (pagina web) è 
disponibile anche da richieste fatte da domini differenti.
A memoria quest'ultima non funziona con ie7.
 
 
-- 
ZeD

 una pagina su un server remoto ?
 
Ti hanno piú o meno già detto tutto quel che ti serve sapere, in merito.
Aggiungo un paio di cose.
 
La prima: il motivo che t'impedisce di accedere a un dominio diverso da
quello in cui si trova la pagina che fa la richiesta, si chiama SOP
(Same Origin Policy):
https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript
 
 
Non si applica solo alle chiamate ajax, ma a tutta una serie di cose: ad
esempio, il non poter accedere al DOM di una pagina caricata in una
iframe, se la pagina che contiene il suddetto non si trova nello stesso
dominio; oppure al non poter generare un data url da un canvas se è
stata blittata un'immagine proveniente da un dominio diverso.
 
La seconda: CORS e JSONP non sono i soli metodi che ti permettono di
chiamate "cross-domain": innanzitutto, precisiamo che entrambi i metodi
presuppongono che tu possa accedere al server per poter manipolare il
tipo di risposta, o che il server già sia predisposto per rispondere a
richieste CORS o JSONP.
Un altro metodo che comunque necessita il metter mano a un server, è il
"tunneling": ovvero la tua pagina non fa la richiesta diretta alla
pagina remota, bensí a una pagina che risiede nello stesso dominio. Tale
pagina, con un linguaggio lato server (uno qualunque), farà per conto
della pagina client la chiamata alla pagina remota, e una volta ottenuta
la risposta la girerà al client: da server a server, la SOP non si applica.
 
Il "vantaggio" di questo approccio, è che hai l'assoluto controllo di
tutto il processo, e che puoi fare chiamate HTTP anche a pagine remote
di cui non puoi modificare le impostazioni lato server (CORS, JSONP), e
che a differenza di JSONP puoi anche fare richieste a pagine che non
danno una risposta "JSON".
 
Generalmente comunque, c'è da dire che a meno di casi particolari è
buona regola evitare di fare tunneling su siti se il proprietario non ne
è a conoscenza.