Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Cross browser e jQuery

  1. #1

    Cross browser e jQuery

    Buongiorno a tutti, in questi giorni mi sto cimentando con la programmazione per dispositivi Blackberry, e visto che il Java non lo conosco , ho deciso di realizzare le app servendomi di WebWorks SDK.
    Il problema mi si è posto, quando mi è stato chiesto di poter eseguire script php; googlando ho trovato la soluzione: usare chiamate ajax a script che vengono hostati da un server esterno.
    Per provare mi sono servito di un dominio altervista, dove ho caricato uno script php, che esegue una semplice stampa di stringa a video.
    Questa è la funzione jQuery di prova, che dal mio server locale va a richiamare lo script esterno:
    codice:
    $.ajax({
    	url:"http://www.dominiodiprova.it/script.php",
    	success: function(result){
    		$('#areaTest').html('
    
    ' + result + '</p>');
    	}
    });
    Se lo provo da server locale direttamente nel browser, la chiamata ajax non mi restituisce nessun valore, mentre se lo provo da emulatore di terminale blackberry ( uso Ripple ) , mi restituisce la stringa stampata a video nello script php.
    Sarei curioso di capire il perchè di questo comportamento; subito ho pensato, che fosse dovuto al fatto che potessero esserci problemi di cross browsing, eseguendo il tutto da server locale verso un altro server , dato che il problema non si presentava da emulatore.
    E nel caso mi servisse ( cosa moooolto improbabile, ma chiedo solo per curiosità ) una soluzione così ,dove un server esegue uno script che risiede su un altro server come potrei sbrigarmela?
    Grazie a tutti per eventuali risposte

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    puoi fare una chiamata jsonp, sul sito di jquery trovi tutte le info.

  3. #3
    Provo con quello , perchè da emulatore va , ma se lo carico su smartphone no...

  4. #4
    Dunque $.ajax non supporta il cross browsing, mentre sono riuscito a far funzionare la cosa su browser da pc, ma non da blackberry, con jsonp
    Qualcuno sa a il motivo????

    posto il codice dell'index:
    codice:
    <!DOCTYPE html>
    <html>
    <head>
        <title>try phpinfo</title>
        <meta id="viewport" name="viewport" content="user-scalable=no,width=device-width" />
        <link href="css/styles.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="js/include.js"></script>
    </head>
     
    <body>
        <div id="container"> 
            <div id="button">
                <h2>Press the button</h2>
                <button type="button" id="btnGPSDefault" onClick="callTheJsonp();">Print something</button>
            </div>
            <div id="areaTest"></div>
        </div>
    </body>
    </html>
    il file php
    Codice PHP:
    <?php
        
    // get the callback function name
        
    $callback '';
        if (isset(
    $_GET['callback']))
        {
            
    $callback filter_var($_GET['callback'], FILTER_SANITIZE_STRING);
        }
         
        
    // make an array with some random values.. so you would see that the results are fetched each time you call this script
        
    $array = array(
                        
    'item_id' => rand(1,13),
                        
    'price' => rand(14,17),
                        
    'quantity' => rand(18,30)
                         
        );
        
    // output this array json encoded.. the callback function being the padding (a function available in the web page)
        
    echo $callback '('.json_encode($array).');';
    ?>
    e il js
    codice:
     function callTheJsonp()
         {
           
             var url = "http://www.dominiodiprova/script.php?callback=parseRequest";
         
             var script = document.createElement('script');
         
             script.setAttribute('src', url);
        
             document.getElementsByTagName('head')[0].appendChild(script);
         }
    
    
         function parseRequest(response)
         {
        	 if(response)
        		 document.getElementById('areaTest').innerHTML = 'Ok';
        	 else
        		 document.getElementById('areaTest').innerHTML = 'Failed to retreive data'; 
         }

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Dunque $.ajax non supporta il cross browsing
    Certo che lo supporta, leggiti bene la documentazione...

    Mai provato da blackberry quindi non so come aiutarti

  6. #6
    hai ragione, leggendo meglio la documentazione , $.ajax lo supporta per il blackberry nessun altro sa cosa possa essere il problema??

  7. #7
    Tralasciando il blackberry per una attimo, una volta inviata la richiesta jsonp ,per visualizzare i dati che vengono ricavati dall'esecuzione dello script, che metodo posso adottare?
    Per adesso nello script php salvo il contenuto da visualizzare in una variabile $ string , poi faccio stampare a video il nome della funzione js che mi prende la stringa come parametro e me la inserisce nella pagina html.
    Non c'è un metodo piu' elegante,usando javascript puro? o bisogna ricorrere per forza a framework tipo jQuery?

    script php:
    Codice PHP:
    <?php
    $callback 
    $_REQUEST['callback'];
    $str "<table border='2'>";
    for(
    $i=0;$i<24;$i++)
    {
        
    $str.="<tr><td>".$i.".00</td><td width='200px'>impegni</td></tr>";
    }
    $str.="</table>";

    echo 
    "var tabella =\"".$str."\";";
    echo 
    $callback '(tabella);';
    js
    codice:
    function getData() {
    	
    	 var url = "http://dominio di prova/prova.php?callback=viewData";
    	 var script = document.createElement('script');
         script.setAttribute('src', url);
         document.getElementsByTagName('head')[0].appendChild(script);     
    }
    
    function viewData(data) {
    	
    	document.getElementById("areaTest").innerHTML = data;
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    puoi costruirti la tabella lato client, la parte php si deve occupare esclusivamente di passare i dati al client(come facevi nel precedente codice che hai postato) e il resto lo fa js. Quello che arriva a js(nella callback) è un oggetto json e lo puoi manipolare come meglio preferisci.

  9. #9
    Il lavoro si è complicato, invece che far visualizzare una semplice tabella con valori ricavati dallo script php, devo far visualizzare un calendario con tanto di link... Diventa piuttosto brigoso se devo spezzettare tutto in una variabile json, da passare allo script js... Sono obbligato a fare delle richieste ajax perchè su piattaforme mobile posso appoggiarmi solo a codice client side da eseguire sui dispositivi, e avendo fatto un calendario in php.... Stavo pensando di spostarmi magari su una soluzione calendario js a questo punto... Così com'è ora funziona tutto , ma non mi piace tanto il fatto che venga passata una stringa chilometrica alla funzione js (paranoie da programmatore )..

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Diventa piuttosto brigoso se devo spezzettare tutto in una variabile json, da passare allo script js
    il discorso cambia poco, sono d'accordo con te, meglio utilizzare un calendario in js(prima ti ho detto di costruirti la tabella con js ora invece dovrai prepararti un calendario, o utilizzarne un già pronto,ma come detto la logica non cambia). immagino dovrai cmq effettuare della chiamate al server per recuperare le informazioni necessarie per la visualizzazione del calendario, dal server fatti ritornare esclusivamente queste informazioni, niente stringone chilometriche o altre cose strane.
    Buona lavoro

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 © 2024 vBulletin Solutions, Inc. All rights reserved.