Domanda

Sto cercando di JavaScript lato client oggetti salvati come file in locale. Non sono sicuro se questo è possibile.

L'architettura di base è questa:

  1. Ping An API esterna per ottenere indietro un oggetto JSON
  2. Lavoro sul lato client con l'oggetto, e, infine, hanno un "mi scaricare" collegamento
  3. Questo link invia i dati al server, che lo elabora e lo invia indietro con un tipo MIME application/json, che (dovrebbe) richiede all'utente di scaricare il file in locale.

In questo momento qui sono i miei pezzi:

codice lato server

<?php
$data = array('zero', 'one', 'two', 'testing the encoding');  
$json = json_encode($data);  
//$json = json_encode($_GET['']); //eventually I'll encode their data, but I'm testing
header("Content-type: application/json"); 
header('Content-Disposition: attachment; filename="backup.json"'); 
echo $_GET['callback'] . ' (' . $json . ');';
?>

Client Rilevante codice lato

$("#download").click(function(){
    var json = JSON.stringify(collection); //serializes their object
    $.ajax({
       type: "GET",
       url: "http://www.myURL.com/api.php?callback=?", //this is the above script
       dataType: "jsonp",
       contentType: 'jsonp',
       data: json,
       success: function(data){
           console.log( "Data Received: " + data[3] );
       }
    });
    return false;
});

In questo momento quando visito il sito api.php con Firefox, viene richiesto un download di download.json e che si traduce in questo file di testo, come previsto:

 (["zero","one","two","testing the encoding"]);

E quando si fa clic #download per eseguire la chiamata AJAX, si registra in Firebug

Data Received: testing the encoding

che è quasi ciò che mi aspettavo. Ricevo la stringa JSON e serializzazione di esso, che è grande. Mi manca due cose:

Le Domande effettivi

  1. Che cosa devo fare per ottenere lo stesso comportamento pronta-per-download che ottengo quando visito la pagina in un browser
  2. (molto più semplice) Come faccio ad accedere, lato server, l'oggetto JSON viene inviato al server per serializzare esso? Non so che cosa è indice nella matrice GET (stupida, lo so, ma ho provato quasi tutto)
È stato utile?

Soluzione

  1. È necessario dire al browser per visitare la pagina, di solito impostando window.location.
  2. Dal momento che è una stringa, verrà inviato come parte della stringa di query crudo. Prova a guardare in $_SERVER['QUERY_STRING'] per esso.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top