Visualizzazione risultati 1 fino 12 di 12

Discussione: jQuery.ajax()

  1. #1
    Guest

    Cool jQuery.ajax()

    Ciao ragazzi.
    Sto cercando di usare la funzione jQuery.ajax() senza successo.
    Esempio:

    Codice:
    $.ajax({
         url: "http://www.lotsquare.altervista.org/index.php",                  
         type: "POST", 
         dataType: "HTML", 
         success: function(response) { alert('Success'); }, 
         error: function() { alert('Error'); } 
    });
    In questo caso se il codice ajax lo inserisco nel sito http://www.lotsquare.altervista.org/ (cioè lo stesso che richiamo nell'url) la funzione ritorna Success.
    In caso mettessi un altro url ritorna sempre Error.


    Spero di essere stato chiaro.
    Grazie dell'aiuto!

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Puoi indicare l'indirizzo della pagina in cui è presente lo script?

  3. #3
    Guest

    Predefinito

    L'indirizzo della pagina è: http://lotsquare.altervista.org/lista_amici.php e con metodo post bisogna passargli degli argomenti perciò l'indirizzo sarà: http://lotsquare.altervista.org/list...zzeccagarbugli

  4. #4
    Guest

    Predefinito

    con ajax non puoi fare richieste da un dominio ad un'altro...

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    con ajax non puoi fare richieste da un dominio ad un'altro...
    Ah...... Che cosa dovrei usare allora? Posso fare in altri modi? Io ho preso spunto da un Plugin per firefox. Questo fa una $get tranquillamente e ottiene l'html della pagina che vuole. Scusate se sono ignorante in materia!
    Ultima modifica di lotsquare : 28-02-2014 alle ore 21.25.42

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Se provi ad accedere usando l'indirizzo http://www.lotsquare.altervista.org/...zzeccagarbugli la richiesta va a buon fine, proprio perché i domini devono essere identici affinché la richiesta vada a buon fine senza altre particolari autorizzazioni.
    Banalmente, non usare un indirizzo assoluto, usane uno relativo.

  7. #7
    Guest

    Predefinito

    Sempre ajax, ma con dei piccoli trucchetti

    Potresti fare così, ad esempio:

    • Crei un file ajax.php


    Codice PHP:
    if (isset($_GET['url'])) {
    $url = urldecode($_GET['url']);
    $url = 'http://' . str_replace('http://', '', $url);
    $opzioni = Array('http' => Array(
    'method' => 'POST',
    'content' => http_build_query($data)
    ));
    $context = stream_context_create($options);
    echo
    file_get_contents($url, false, $context);
    • Anziché, ad esempio, richiamare www.domino-a.org richiami ajax.php?url=www.domino-a.org


    Codice:
    $.ajax({
      url: "ajax.php?url=www.lotsquare.altervista.org/index.php",
      type: "POST",
      dataType: "HTML",
      success: function(response) { alert('Success'); },
      error: function() { alert('Error'); }
    });
    L'ho scritto sul momento senza testarlo, potrebbe esserci qualche errore...

  8. #8
    Guest

    Predefinito

    La soluzione di tampertools è perfetta. Nel senso che è un trucchetto per far sembrare ad ajax che il percorso sia relativo quando in realtà non lo è. Quindi quel pezzo di codice restituisce sempre success.
    Il problema vero è che nella funzione success il dato response (che sarebbero i dati che tornano dal server) è sempre vuoto.
    response è un oggetto di tipo PlainObject e se lo si stampa con alert(response.toSource()); si vede NewString("") quindi stringa vuota.
    Se qualcuno può aiutarmi...

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Non ho letto tutto. Mi sembra di capire che stai utilizzando uno script PHP come "proxy" per effettuare richieste cross domain. Hai attivato la connessione server2server?

    Comunque, vedi qui.

    Ciao!

  10. #10
    Guest

    Predefinito

    Il problema non è quello. Mi spiego bene. Adottando la soluzione che mi avete fatto notare ho risolto facendo un file ajax.php con questo codice:

    Codice PHP:
    <?php

    if (isset($_GET['url'])) {
    $url = urldecode($_GET['url']);
    $url = 'http://' . str_replace('http://', '', $url);
    $opzioni = Array('http' => Array('method' => 'POST','content' => http_build_query($data)));
    $context = stream_context_create($opzioni);
    echo
    file_get_contents($url, false, $context);
    }

    ?>
    e il punto saliente della mia pagina da cui voglio fare una richiesta verso l'esterno :

    Codice PHP:
    $.ajax({
    url: "ajax.php?url=http://lotsquare.altervista.org",
    context: document.body,
    type: "POST",
    dataType: "text",
    success: function(data){alert(data.toSource());},
    error: function(){alert('Error');}
    });
    La funzione success viene sempre chiamata correttamente. Il vero problema è, qualsiasi url usi nell'oggetto "data", se lo stampo come ho fatto sopra, c'è sempre la stessa cosa e cioè: "NewString("");". Cioè una stringa vuota. Anche se come url inserisco un dominio interno.
    Se volete le pagine di riferimento andate su http://www.lotsquare.altervista.org e cliccate sul bottone.

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    E mi ripeto: verifica di aver abilitato le connessioni server2server. È quello il problema.
    Il fatto che inserisci un dominio interno non centra nulla perché specifichi un dominio con percorso assoluto, quindi altervista lo vede come dominio esterno. Prova con alcuni domini già presenti nella whitelist: vedrai che funziona.

    Ciao!
    Ultima modifica di alemoppo : 01-03-2014 alle ore 17.27.07

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    E mi ripeto: verifica di aver abilitato le connessioni server2server. È quello il problema.
    Il fatto che inserisci un dominio interno non centra nulla perché specifichi un dominio con percorso assoluto, quindi altervista lo vede come dominio esterno. Prova con alcuni domini già presenti nella whitelist: vedrai che funziona.

    Ciao!
    Verissimo problema risolto abilitando server2server e aspettando una decina di minuti.
    Il vero problema però è che l'url da cui mi serviva prendere l'html non restituisce niente. Per il resto delle pagine web funziona.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •