Pergunta

Eu estou tentando obter do lado do cliente javascript objetos salva como um arquivo localmente. Eu não tenho certeza se isso é possível.

A arquitetura básica é esta:

  1. Ping uma API externa para receber de volta um objeto JSON
  2. do lado do cliente Trabalho com esse objeto, e, eventualmente, ter um "Transferência me" elo
  3. Este link envia os dados para o meu servidor, que processa-lo e envia-lo de volta com um application/json tipo mime, que (deve) alerta o usuário para baixar o arquivo localmente.

Agora, aqui estão minhas peças:

Servidor de Código Side

<?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 . ');';
?>

Cliente Relevante Código Side

$("#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;
});

Agora, quando eu visitar o site api.php com o Firefox, ele solicitará um download de download.json e que os resultados neste arquivo de texto, como esperado:

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

E quando eu clico #download para executar a chamada AJAX, ele registra em Firebug

Data Received: testing the encoding

que é quase o que eu esperaria. Estou recebendo a string JSON e serialização-lo, o que é ótimo. Eu estou sentindo falta de duas coisas:

As perguntas reais

  1. O que eu preciso fazer para obter o mesmo comportamento pronta-a-download que eu recebo quando eu visitar a página em um navegador
  2. (muito mais simples) Como o acesso I, do lado do servidor, o objeto JSON sendo enviados para o servidor para serializar isso? Eu não sei o índice é na matriz GET (bobo, eu sei, mas eu tentei quase tudo)
Foi útil?

Solução

  1. Você precisa dizer ao navegador para visitar a página, normalmente, definindo window.location.
  2. Uma vez que é uma string, ele será enviado como parte da string de consulta cru. Tente procurar no $_SERVER['QUERY_STRING'] para ele.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top