|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[Ajax] Leggere in contenuto da un URL esterno
Salve a tutti,
sicuramente è un problema trattato molte volte, ma nonostante le ricerche, non sono riuscito a trovare una valida soluzione. Tramite Jquery, vorrei leggere il contento di una pagina esterna al mio dominio, contenente una tabella, dopo averla letta fare una conversione in testo da inserire in un DIV. Il problema riguarda solo la prima parte, cioè la lettura del contenuto tramite URL. Ho provato con: [code] var content; $.ajax({ url: url, type: 'GET', success: function (result) { content = result; } }); [code] Ma non succede nulla. Per testare la mia funziona ho provato a valorizzare "content" a mano, come faccio ad applicargli la mia funzione, cioè: Codice:
function showText (content){ var textToShow; $('table#GetFeatureInfoTable tr.cellValue').each(function () { $('table#GetFeatureInfoTable tr.cellValue td').each(function () { if ($(this).hasClass('ID')) { textToShow = '<div class="featuredID">id: ' + $(this).html() + '</div>'; } if ($(this).hasClass('DESCRIPTION')) { textToShow = textToShow + '<div class="description">Descrizione: ' + $(this).html() + '</div>'; } }); }); } Grazie. |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: May 2006
Messaggi: 86
|
Per farla breve ... non puoi a causa della same origin policy. http://en.wikipedia.org/wiki/Same-origin_policy
esistono trucchetti per raggirarla, ma non sono affidabili, e son solitamente lenti. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Capisco, però l'URL interrogato non è altro che un server locale presente nella mia rete locale...
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
Qual'è l'URL della pagina dove gira lo script e qual'è quello della risorsa che vuoi includere?
Eventualmente devi attivare CORS sul tuo webserver http://en.wikipedia.org/wiki/Cross-o...source_sharing |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Potresti lasciare che sia il server a fare la get sull'altro dominio e fargli inviare la risposta sulla tua pagina. In pratica la pagina del dominio A fa una richiesta ajax (preferibilmente una post) verso il suo server passando come parametro l'url di una pagina appartenente al dominio B, il server fa una richiesta per tale url ed inserisce la risposta nella medesima chiamata ajax. Se il dominio B richiede l'utilizzo dei cookie la cosa si complica un po', soprattutto se è necessaria l'autenticazione, ma è comunque fattibile.
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Si tratta di url locali, del tipo http://nome-computer:8080/server.exe
Ho trovato una libreria Jquery che da supporto per CROSS, cosa ne pensate? La conoscete? Daniels118, potresti darmi qualche dettaglio in più? Grazie. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Quote:
Se eseguo una richiesta del tipo: Codice:
$.ajax({ type: 'POST', url: my_url, crossDomain: true, dataType: 'json', success: function (responseData, textStatus, jqXHR) { console.log(responseData); }, error: function (responseData, textStatus, errorThrown) { console.warn(responseData, textStatus, errorThrown); alert('CORS failed - ' + textStatus); } }); Codice:
Bloccata richiesta multiorigine (cross-origin): il criterio di corrispondenza dell’origine non consente la lettura della risorsa remota da my_url È possibile risolvere il problema spostando la risorsa sullo stesso dominio o attivando CORS. |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Ho dato un'occhiata al plugin che hai trovato, è veramente interessante.
In questa pagina è spiegato come funziona, il quarto metodo (Setting up a local proxy) fa praticamente quello che ti dicevo prima. Gli altri metodi presuppongono che tu abbia la possibilità di modificare il servizio presente sull'altro dominio in modo da adeguarlo alle richieste cross-dominio, il proxy invece è più flessibile (e direi anche più immediato), valuta tu cosa puoi utilizzare e quale metodo ritieni più conveniente. |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Ho risolto così:
Codice:
$.ajax({ url: jsonUrl, type: 'GET', crossDomain: true, dataType: 'jsonp', dataCharset: 'jsonp', //contentType: 'application/json', success: function (result) { //my_code }, error: function (result) { //my_code } }); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:45.