Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Recupera risposta JSONP

    Ciao a tutti,
    con il seguente codice jquery:
    codice:
    $("#campo").blur(function(){
    			var valore = $(this).val();
    			var url = "http://miosito.com/pagina.php?variabile1=123&variabile2=345&variabile3="+valore+"&callback=result";
          $.getJSON(url, {} , function(data){
            var obj = $.parseJSON(data);
            $("#mio_link").val(obj.link);
          });
    effettuo una chiamata ad una pagina su un altro sito, pagina che mi restituisce il seguente codice:
    codice:
    result({"link":"il_mio_link"});
    La chiamata funziona, perchè la pagina esegue effettivamente ciò che gli si chiede, ma la risposta non viene visualizzata all'interno del campo con id=mio_link.
    Nessun errore di js viene generato.

    Idee?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    il parse è inutile, viene già effettuato dal framework, ti basta data.link

  3. #3
    Originariamente inviato da Vindav
    il parse è inutile, viene già effettuato dal framework, ti basta data.link
    Il problema è che anche senza parser, data.link non restituisce nulla.
    Codice PHP:
    $("#campo").blur(function(){
            var 
    valore = $(this).val();
            if(
    valore != ""){
                var 
    url "http://miosito.com/pagina.php?variabile1=123&variabile2=345&variabile3="+valore+"&callback=?";
          $.
    getJSON(url, {} , function(data){
            $(
    "#mio_link").val(data.link);
          });
            }
        }); 
    Ho modificato lo script, eliminando il nome della variabile callback (ora è callback=?) e restituendo come risultato del link remoto (in formato json):
    codice:
    {"link":"http:\/\/il_mio_link.it\/"}
    Ma come dicevo, non ottengo niente

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    hai verificato che ti entri almeno nella funzione? magari mettici un alert, poi verifica nella console js di chrome/explorer o in firebug se la chiamata va a buon fine e quel'è la risposta che ricevi

  5. #5
    La chiamata va a buon fine, tantè che il file che viene chiamato effettua correttamente quello che deve. Il problema è che la risposta che dà, quella dei commenti sotto, non viene "interecettata" da jquery.
    Con l'alert non compare nulla, non compare neanche l'alert. Es.
    Codice PHP:
    $.getJSON(url, {} , function(data){ 
    alert(data.link);        
    //$("#mio_link").val(data.link); 
          
    }); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se non entra nella function significa che per qualche motivo la chiamata non va a buon fine, che arrivi al server non ha molta importanza se poi i dati non vengono restituiti correttamente... come ho già detto puoi verificare l'esito della chiamata con la console javascript o firebug, inoltre aggiungi anche la gestione dell'errore

    .error(function() { alert("error"); })

    non so se lo stai già facendo cmq lato server devi recuperare il parametro callback (che sara qualcosa del tipo jsonp124343) e applicarlo al json, la risposta sarà qualcosa tipo

    jsonp124343({"link":"il_mio_link"})

  7. #7
    Inizialmente passavo il nome della variabile callback nell'url, variabile che recuperavo la php e usavo per creare la risposta, nel formato che hai menzionato te.
    Ma non funzionava lo stesso
    Ora in effetti non passo come risposta da remoto il nome della variabile. Provo.

  8. #8
    Niente da fare, indietro non viene intercettato nulla
    La risposta della pagina miosito.com/pagina.php è corretta, parlo di sintassi
    codice:
    result({"link":"http:\/\/mio_link.it\/"})
    Di seguito lo script intero:
    Codice PHP:
    <script>
    $(
    document).ready(function(){
        $(
    "#campo_dato").blur(function(){
            var 
    valore = $(this).val();
            if(
    valore != ""){
                var 
    url "http://miosito.com/pagina.php";
          $.
    getJSON(url, {
                    
    variabile1"123",
                    
    variabile2"456",
                    
    variabile3valore,
                    
    callback"result"
                
    } , function(data){
            $(
    "#campo").val(data.link);
                    $(
    "#risultato_jsonp").html(data.link); 
          });
            }
        }).
    error(function() { alert("error"); });
    });
    </script> 
    #campo è un campo hidden
    #risultato_jsonp è uno span, creato solamente per visualizzare la risposta
    L'alert di errore non compare, evidentemente non ci son errori.
    In ogni caso, nessun dato viene restituito

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    non definire una tua callback altrimenti il framework si aspetta di trovare una funzione js con tale nome, che ovviamente non esiste... utilizza il punto di domanda come era in precedenza, per il resto

    non so se lo stai già facendo cmq lato server devi recuperare il parametro callback (che sara qualcosa del tipo jsonp124343) e applicarlo al json, la risposta sarà qualcosa tipo

    jsonp124343({"link":"il_mio_link"})

  10. #10
    Se per recuperare la variabile callback intendi
    Codice PHP:
    $callback $_GET["callback"]; 
    ovviamente viene fatto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.